为什么typeof不是一个方法?

时间:2012-06-28 18:23:55

标签: javascript

出于好奇,typeof不是常规方法或函数的原因是什么,而是把它放在变量或数据的前面。

他们这样做: var something = typeof somethingElse;

而不是: var something = somethingElse.typeof();

而且,引用typeof和var关键字的正确术语是什么?他们是经营者吗?

2 个答案:

答案 0 :(得分:9)

是的,typeof是一元运算符,例如+-~!void。另一方面,var是变量声明语句的一部分,并没有它的奇特名称。

我猜测它不是一个方法的原因是双重的:

  1. 您可以在nullundefined上使用它。
  2. 您可以在未声明的变量上使用它而不会出错。
  3. 如果它是常规方法,那么这些方法都不会起作用,并且为特定的方法外观添加特殊异常会很混乱。

答案 1 :(得分:3)

Mozilla docs将typeof称为运算符。根据他们的docs

  

typeof运算符返回一个表示其类型的字符串   未评估的操作数。

请注意,它们所谓的并不重要,这是ECMA规范所称的。

根据Mozilla的文档,运算符的类型在JavaScript 1.1和ECMA版本中定义:ECMA-262(以及用于E4X对象的ECMA-357)

如果您感兴趣,ECMA 262 specs for version 5.1(警告 - pdf链接)将在第71页的第11.4.3节中介绍typeof运算符。