学完「JS 数据类型」那块知识之后,我们就知道,函数属于「对象类型」。
而typeof的作用是来检测数据类型的,typeof一个函数理应返回object。
但是,为什么结果是function呢?(如上图)
这是因为,typeof去检测引用类型的时候,会去看这个引用类型内部有没有[[call]]方法,如果有,则返回function;如果没有,则返回object。
我们可以看下这张图:
请注意最后两行,typeof Object(does not implement [[Call]]) 返回的是”object”;
typeof Object(implements[[Call]]) 返回的是”function”
注:表中的Symbol和BigInt大家可能会感到陌生,因为这两种数据类型是ES6新增的。