谈谈JavaScript数据类型

很多新手很容易弄不清楚js的数据类型,在这里给大家总结一下。

七种数据类型

JavaScript一共七种数据类型(可以召唤神龙了):

  1. 空值(null)
  2. 未定义(undefined)
  3. 数字(number)
  4. 字符串(string)
  5. 布尔值(boolean)
  6. 对象(object)
  7. 符号(symbol ES6新增)

判断类型

在JavaScript中,主要利用 typeof 判断数据类型,但是仔细看下面的代码:

typeof undefined=== 'undefined' //true
typeof 42 === 'number' //true
typeof '42' === 'string' //true
typeof {age:24} === 'object' //true
typeof true === 'boolean'  //true
typeof Symbol() === 'symbol'  // true

以上代码都很好理解,但是:

typeof null == 'object' //true
typeof function a(){...} === 'function' //true

上述代码有两个疑问:
1. 为什么 typeof null 是‘object’而不是 ‘null’?
2. 为什么typeof function a(){}是 ‘function’而不是 ‘object’?‘function’为什么不是基本类型之一?

为什么 typeof null 是‘object’而不是 ‘null’?

解答:这是JavaScript的一个bug,由来已久,而且未来也不会修复。因为已经随JavaScript存在了这么多年,涉及太多系统了,如果真的修复,会导致大量的web系统不能够正常工作。
那么,得怎么判断一个变量是null类型呢了?

var a = null;
(!a && typeof a == 'object');//true

为什么typeof function a(){}是 ‘function’而不是 ‘object’?‘function’为什么不是基本类型之一?

解答:‘function’并不是JavaScript的内置类型之一,它实际上是object的一个“子类型”。但是为什么返回的是‘function’而不是‘object’,这个就有待各位指教了。
因为还有一种特殊情况:

typeof [1,2,3,4] == 'object' 

说明数组也是object的一个子类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值