详解JavaScript中的数据类型,以及检测数据类型的方法


Posted in Javascript onSeptember 17, 2020

一.js中的数据类型有哪些?

在js中,基本数据类型有五种,分别是 string、number、boolean、null、undefined,不过在ES6中新增加的了一种基本数据类型Symbol(表示独一无二的值),其作用主要是从根本上防止属性名的冲突而设定的。

除了基本数据类型之外,还有引用数据类型object,也有人称之为复杂数据类型,包含了我们常见的Array、Object、Function等。

所以现在js中的数据类型共有七种。

PS: Symbol数据类型通过Symbol函数生成。也就是说,对象的属性名现在可以有原来的字符串以及现在的Symbol类型俩种了,凡是属性名属于Symbol类型,就是独一无二的,可以保证不会与其他属性名冲突。

Symbol函数还可以接收一个字符串参数,表示对Symbol实例的描述。

let s = Symbol()
console.log(typeof s) // "symbol"

let s1 = Symbol('s1')
let s2 = Symbol('s2')
console.log(s1) // Symbol(s1)
console.log(s2) // Symbol(s2)

注意:Symbol函数的参数只是表示对当前实例的描述,因此相同参数的Symbol的返回值是不相等的。

二.js数据类型检测的方法(一般有一下几种):

1.typeof:typeof一般用于检测基本数据类型,因为它检测引用数据类型都返回Objcet

console.log(typeof 1) // "number"
console.log(typeof 'a') // "string"
console.log(typeof undefined) // "undefined"
console.log(typeof true) // "boolean"
console.log(typeof null) // "object"
console.log(typeof ) // "symbol"
function fun(){ }
console.log(typeof fun) // "function"

注意:typeof检测null也会返回Object,这是js一直以来遗留的BUG。用typeof检测function返回的是'function'。

2.instanceof 这个方法主要是用来准备的检测引用数据类型的(不能用来检测基本数据类型),用来检测构造函数的prototype属性是否出现在对象原型链中的任意位置。

let fun = function(){ }
fun instanceof Function  //true
let obj ={ }
obj instanceof Object //true
let arr = [ ]
arr instanceof Array //true

曾今被面试官问过一道题 1 instanceof 返回的是什么? 当时给因为自身原因说了返回true,现在想想Emmm…

1 instanceof Number //false 
null instanceof Object // false

instanceof运算符直接访问的变量的原始值,不会自动建立包装类。因此不能用来判断基本数据类型。

3.Object.prototype.toString()可以用来准备的检测所有数据类型。

Object.prototype.toString.call([])
// "object Array"
Object.prototype.toString.call(1)
// "object Number"
Object.prototype.toString.call(null)
// "object Null"
Object.prototype.toString.call(undefined)
// "object Undefined"
Object.prototype.toString.call({})
// "object Object"
Object.prototype.toString.call(function add(){})
// "object Function"
....

4.constructor通过检测类型在原型链中的constructor指向来返回布尔值。

let arr =[]
arr.constructor==Array
// true
let fun = function(){}
fun.constructor==Function
//true

注意:null和undefined是没有constructor属性的,可以用其他方法判断。

通过几这次的总结,对于js的数据类型,以及如何检测数据类型有了深刻的认识,下次面试不慌张~

以上就是详解JavaScript中的数据类型,以及检测数据类型的方法的详细内容,更多关于JavaScript 数据类型的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
FireFox与IE 下js兼容触发click事件的代码
Nov 20 Javascript
JS如何将UTC格式时间转本地格式
Sep 04 Javascript
基于javascript实现漂亮的页面过渡动画效果附源码下载
Oct 26 Javascript
JavaScript实现点击单元格改变背景色的方法
Feb 12 Javascript
基于jQuery实现仿QQ空间送礼物功能代码
May 24 Javascript
AngularJS基础 ng-srcset 指令简单示例
Aug 03 Javascript
JavaScript兼容性总结之获取非行间样式案例
Aug 07 Javascript
关于Stream和Buffer的相互转换详解
Jul 26 Javascript
JS实现根据指定值删除数组中的元素操作示例
Aug 02 Javascript
Angular动态绑定样式及改变UI框架样式的方法小结
Sep 03 Javascript
vue最简单的前后端交互示例详解
Oct 11 Javascript
关于React动态加载路由处理的相关问题
Jan 07 Javascript
JavaScript编码小技巧分享
Sep 17 #Javascript
如何利用node转发请求详解
Sep 17 #Javascript
前端性能优化建议
Sep 17 #Javascript
JavaScript常用工具函数汇总(浏览器环境)
Sep 17 #Javascript
JavaScript中如何调用Java方法
Sep 16 #Javascript
Vue封装全局过滤器Filters的步骤
Sep 16 #Javascript
Vue父子组件传值的一些坑
Sep 16 #Javascript
You might like
PHP截取汉字乱码问题解决方法mb_substr函数的应用
2008/03/30 PHP
thinkphp的CURD和查询方式介绍
2013/12/19 PHP
php使用COPY函数更新配置文件的方法
2015/06/18 PHP
PHP实现的QQ空间g_tk加密算法
2015/07/09 PHP
jQuery技巧大放送 学习jquery的朋友可以看下
2009/10/14 Javascript
jQuery选择没有colspan属性的td的代码
2010/07/06 Javascript
jquery实现每个数字上都带进度条的幻灯片
2013/02/20 Javascript
jquery实现metro效果示例代码
2013/09/06 Javascript
ie中js创建checkbox默认选中问题探讨
2013/10/21 Javascript
jQuery插件pagination实现分页特效
2015/04/12 Javascript
jQuery获取DOM节点实例分析(2种方式)
2015/12/15 Javascript
js获取ip和地区
2017/03/10 Javascript
js防刷新的倒计时代码 js倒计时代码
2017/09/06 Javascript
React-Native左右联动List的示例代码
2017/09/21 Javascript
浅谈在vue项目中如何定义全局变量和全局函数
2017/10/24 Javascript
使用watch监听路由变化和watch监听对象的实例
2018/02/24 Javascript
Node.js 使用AngularJS的方法示例
2018/05/11 Javascript
angular6的响应式表单的实现
2018/10/10 Javascript
Vue项目pdf(base64)转图片遇到的问题及解决方法
2018/10/19 Javascript
JavaScript实现密码强度实时验证
2020/03/18 Javascript
Python中optionParser模块的使用方法实例教程
2014/08/29 Python
分析Python的Django框架的运行方式及处理流程
2015/04/08 Python
Djang中静态文件配置方法
2015/07/30 Python
pygame游戏之旅 添加键盘按键的方法
2018/11/20 Python
Python中时间datetime的处理与转换用法总结
2019/02/18 Python
详解python中init方法和随机数方法
2019/03/13 Python
使用Python测试Ping主机IP和某端口是否开放的实例
2019/12/17 Python
使用Python Tkinter实现剪刀石头布小游戏功能
2020/10/23 Python
美国潜水装备、水肺潜水和浮潜设备商店:Leisure Pro
2018/08/08 全球购物
英国屋顶用品和材料超市:Roofing Supplies UK
2019/08/24 全球购物
武汉世纪畅想数字传播有限公司.NET笔试题
2014/07/22 面试题
医学生实习自荐信
2013/10/01 职场文书
2014年最新党员对照检查材料汇总
2014/09/15 职场文书
老乡聚会通知
2015/04/23 职场文书
解读Vue组件注册方式
2021/05/15 Vue.js
javascript拖曳互换div的位置实现示例
2021/06/28 Javascript