以下是函数及其数据类型的简单示例:
代码段:
function hello(){
console.log("hello");
}
console.log(typeof(hello)); //function
查询:
在JavaScript中,这些是数据类型:
1. Object
2. Primitives - String, number, boolean, null, undefined, symbol(ECMA6)
当没有名为' function'的数据类型时那么在世界上我如何将数据类型作为函数(虽然逻辑上是正确的)。另外,文本上写的是函数的数据类型是object。所以,我必须得到对象的结果。
有人可以澄清这种困惑吗?
答案 0 :(得分:4)
是的,你是对的,没有function
类型,它只是typeof
运算符中为对象返回"function"
的黑客攻击可以赎回。
参考:http://www.ecma-international.org/ecma-262/6.0/#sec-typeof-operator
一般来说,typeof
会返回实际的类型名称,但有两个例外:
typeof null
返回object
,但null
的类型为Null
typeof <func>
返回function
,但<func>
的类型为Object
答案 1 :(得分:2)
来自Kyle Simpson的“你不懂JS书”:
那么typeof可以返回的第七个字符串值是什么?
typeof function a(){ /* .. */ } === "function"; // true
这很容易想到 该函数将是JS中的顶级内置类型,尤其如此 给定typeof运算符的这种行为。但是,如果你看了 spec,你会发现它实际上是某个对象的“子类型”。 具体地说,一个函数被称为“可调用对象” - 一个 具有允许它的内部[[Call]]属性的对象 调用
它是为了区分“可调用”对象和“不可调用”对象。