Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么类型是运算符而不是属性?_Javascript_Typeof - Fatal编程技术网

Javascript 为什么类型是运算符而不是属性?

Javascript 为什么类型是运算符而不是属性?,javascript,typeof,Javascript,Typeof,我正在学习Javascript,我遇到了一些感觉“古怪”的东西 为什么属性的类型不像.length或.name?它似乎应该属于这一类。相反,它被认为是一个类似等号的运算符 可能有一个明显的解释,或者我不理解某些东西(很容易理解)。如果它是一个属性,那么您将无法测试某些东西是否是未定义的,因为未定义的值不能有属性 更糟糕的是,如果一个变量未声明,那么尝试测试该变量上的属性将抛出引用错误。因为typeof在JavaScript中是通用的(也就是说,您可以对任何变量使用它),所以它可以作为对象上的属性

我正在学习Javascript,我遇到了一些感觉“古怪”的东西

为什么属性的类型不像
.length
.name
?它似乎应该属于这一类。相反,它被认为是一个类似等号的运算符


可能有一个明显的解释,或者我不理解某些东西(很容易理解)。

如果它是一个属性,那么您将无法测试某些东西是否是未定义的,因为未定义的值不能有属性


更糟糕的是,如果一个变量未声明,那么尝试测试该变量上的属性将抛出引用错误。

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

if(someNullVariable.typeof . . .) { . . . } // error
但是,由于它是一个运算符,因此您可以独立于正在检查的内容使用它:

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

可能重复的Ok感谢一吨,这是有意义的!我会记住的。好吧,我明白了,这使它在实践中更有用。谢谢