为什么typeof是运算符而不是属性?

时间:2016-12-06 15:26:27

标签: javascript typeof

我正在学习Javascript,我遇到了一些感觉有点古怪"。

为什么不输入.length.name这样的属性?它似乎应该属于那一类。相反,它被视为操作符类似于等号=

也许有一个明显的解释,或者我不理解某些事情(很容易)。

2 个答案:

答案 0 :(得分:9)

如果它是属性,那么您将无法测试某些内容是否为undefined,因为未定义的值不具备属性。

更糟糕的是,如果变量未声明,那么尝试在其上测试属性会抛出ReferenceError。

答案 1 :(得分:2)

由于typeof在JavaScript中是通用的(也就是说,您可以对任何变量使用它),因此它可以作为Object的属性实现。但是,如果是,您将无法在nullundefined类型上调用它。

if(someNullVariable.typeof . . .) { . . . } // error

但是,因为它是一个操作符,你可以独立于你正在检查的内容使用它:

if(typeof someNullVariable === "null")  { . . . }  // Match!