类型
JavaScript:弱类型(动态类型)
Java等:强类型(静态类型)
值类型
JS中所有操作的值都有类型,变量没有类型,只有值才有。
ES中所有的值都有一个对应的语言类型。 类型是值的内部特征,他定义了值的行为,以使其区别于其他值。
null值类型
typeof null === 'object' // 这是一个null的bug,而非typeof的
如何检测null:
var a = null
(!a && typeof a === 'object') // true
function值类型
typeof function a() {} // 'function'
这样看来,function也是js的一个内置类型。然而查阅规范就会知道,它实际上是object的一个“子类型”。具体来说,函数是“可调用对象”。他有一个内部属性[[Call]],该属性使其可调用。
所以,function是一个特殊类型,是object的“子类型”