我正在学习Javascript,我遇到了一些感觉有点古怪"。
为什么不输入.length
或.name
这样的属性?它似乎应该属于那一类。相反,它被视为操作符类似于等号=
也许有一个明显的解释,或者我不理解某些事情(很容易)。
答案 0 :(得分:9)
如果它是属性,那么您将无法测试某些内容是否为undefined
,因为未定义的值不具备属性。
更糟糕的是,如果变量未声明,那么尝试在其上测试属性会抛出ReferenceError。
答案 1 :(得分:2)
由于typeof
在JavaScript中是通用的(也就是说,您可以对任何变量使用它),因此它可以作为Object的属性实现。但是,如果是,您将无法在null
和undefined
类型上调用它。
if(someNullVariable.typeof . . .) { . . . } // error
但是,因为它是一个操作符,你可以独立于你正在检查的内容使用它:
if(typeof someNullVariable === "null") { . . . } // Match!