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

3
我正在学习Javascript,并发现了一些感觉有点“古怪”的东西。
为什么typeof不像.length或.name那样是一个属性呢?它似乎应该属于这个范畴。相反,它被认为是一个操作符,类似于等号=。
也许有一个显而易见的解释,或者我没有理解某些东西(很容易发生)。

可能是一个重复的问题:检测未定义的对象属性 - Ionut Necula
2个回答

9
如果它是一个属性,那么你就无法测试某些东西是否为undefined,因为undefined值不能有属性。
更糟糕的是,如果一个变量未声明,则尝试在其上测试属性会抛出一个ReferenceError。

好的,非常感谢,我明白了!我会记住的。 - DR01D

2

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

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

但是,由于它是一个运算符,您可以独立使用它,而不受您正在检查的内容的影响:

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

好的,我明白了,这使得它在实践中更有用。谢谢! - DR01D

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接