JavaScript的数据类型是以1-3位 的类型标签来储存的,判断类型标签的值同
string, boolean, object, int , double,
undefined和null比较特殊:undefined是(-2)^32
- 为什么typeof null == ‘object’
-
- object的类型标签为000,而null的值是机器码NULL指针(null指针全是0,或者说一个对象类型标记加上一个为零的引用) 故typeof会判断null为object
- 为什么typeof Array == ‘object’
-
- 在JavaScript里 像array,function去看原型都是object.prototype,所以array会显示object
- 那为什么typeof Function !== 'object'
-
- es6中是这样说的:如果一个对象实现了[[call]]内部方法就是function,否则为object
[[call]]是什么
执行与此对象关联的代码。通过函数调用表达式调用。内部方法的参数是一个 this 值和一个 包含调用表达式传递给函数的参数的列表。实现此内部方法的对象是可调用的。
有了[[call]]这个对象就可以被调用