#你不知道的javascript中卷#(1)javascript类型 null的判断方法

一:javascript有七种内置类型

(1)空值:null(空值,指曾被赋过值,但是目前没有值)

(2)未定义:undefined(从未被赋过值)

(3)布尔值:boolean

(4)数字:number

(5)字符串:srting

(6)对象:object

(7)符号:symbol(ES6新增)

二:类型查看

(1)正常类型判断

可以用typeof运算符查看值得类型,它返回的是类型的字符串值,有意思的是,这七种类型和他们的字符串值并不是一一对应的

console.log(typeof(undefinned)) // undefined
console.log(typeof(true)) // boolean
console.log(typeof(42)) // number
console.log(typeof('42')) // string
console.log(typeof({ life : 42})) // object
console.log(typeof(Symbol())) // symbol

(2)null:特殊类型的判断

以上类型均有同名的字符串值与之对应

null不在此列,它比较特殊, type对它的处理有问题

console.log(typeof(null))  // object

正确的返回值应该是 ‘null’, 但是这个bug由来已久,在javascript中已经存在了将近二十几年了,也许永远都不会修复,因为这个牵扯到了太多的web系统,‘修复’它会产生更多的bug,令 许多系统无法正常工作

对null值类型的判断需要使用复合条件来判断

var a = null
console.log(!a && typeof a === 'object') // true

null是‘假值’,也是唯一一个用typeof检测会返回‘object’的基本类型值

(3)function:object的子类型

console.log(typeof(function a(){})) // function

输出的类型不是上面的七种类型,这样说function函数也是javascript的一个类型,然后查阅规范就知道,他实际上是object的一个子类型,具体来说,函数是‘可调用对象’,它有一个内部属性[[Call]],该属性使其可以被调用

(4)数组:object的子类型

console.log(typeof([1,2, 3])) // object

数组也是对象,确切的说,数组也是object的一个子类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值