类型

JavaScript:弱类型(动态类型)
Java等:强类型(静态类型)

值类型

JS中所有操作的值都有类型,变量没有类型,只有值才有。

ES中所有的值都有一个对应的语言类型。 类型是值的内部特征,他定义了值的行为,以使其区别于其他值。

null值类型

  1. typeof null === 'object' // 这是一个null的bug,而非typeof的

如何检测null:

  1. var a = null
  2. (!a && typeof a === 'object') // true

function值类型

  1. typeof function a() {} // 'function'

这样看来,function也是js的一个内置类型。然而查阅规范就会知道,它实际上是object的一个“子类型”。具体来说,函数是“可调用对象”。他有一个内部属性[[Call]],该属性使其可调用。

所以,function是一个特殊类型,是object的“子类型”