JavaScript数据类型函数有效性

时间:2016-09-13 07:15:06

标签: javascript function

以下是函数及其数据类型的简单示例:

代码段:

function hello(){
    console.log("hello");
}
console.log(typeof(hello)); //function

查询:

在JavaScript中,这些是数据类型:

1. Object
2. Primitives - String, number, boolean, null, undefined, symbol(ECMA6) 

当没有名为' function'的数据类型时那么在世界上我如何将数据类型作为函数(虽然逻辑上是正确的)。另外,文本上写的是函数的数据类型是object。所以,我必须得到对象的结果。

有人可以澄清这种困惑吗?

2 个答案:

答案 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]]属性的对象   调用

它是为了区分“可调用”对象和“不可调用”对象。