2

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

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

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

此外,引用 typeof 和 var 关键字的正确术语是什么?他们是运营商吗?

4

2 回答 2

9

是的,是一元运算符,typeof+-~和。另一方面,它是变量声明语句的一部分,并且没有花哨的名称。!voidvar

我猜它没有成为一种方法的原因是双重的:

  1. 您可以在null和上使用它undefined
  2. 您可以在未声明的变量上使用它而不会出错。

如果它是一个常规方法,那么它们都不会起作用,并且为特定方法看起来的东西添加特殊例外是混乱的。

于 2012-06-28T18:28:57.360 回答
3

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

typeof 运算符返回一个字符串,指示未计算的操作数的类型。

请注意,他们称之为什么并不重要,它是 ECMA 规范所称的。

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

如果您有兴趣,请参阅5.1 版的 ECMA 262 规范(警告 - pdf 链接)在第 71 页的第 11.4.3 节中查看 typeof 运算符。

于 2012-06-28T18:26:44.707 回答