为什么“typeof”与“typeof()”相同?

时间:2015-01-06 20:44:46

标签: javascript

我正在学习JavaScript,我在代码中看到使用typeoftypeof()的代码相同,例如:

结果是两种情况下的数字:

console.log(typeof 1); 
console.log(typeof(1));

4 个答案:

答案 0 :(得分:8)

根据{{​​3}},

typeof是一元运算符 - 例如与voiddelete相同。使用分组()包装其表达式只是为了方便(并且 - 理论上 - 覆盖默认优先级),但从未将其视为函数调用。

答案 1 :(得分:2)

因为“typeof”是一个运算符(不是函数,不是对象),并且运算符可以在带括号的表达式中使用:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof

http://www.ecma-international.org/ecma-262/5.1/#sec-11.4.3

答案 2 :(得分:1)

typeof是一个运算符,就像+, - ,%,&&它不是一种方法,“1”不是传递的参数,不需要括号。但是它会接受括号,因为它们只是指定操作的顺序,就像(1)+(2)是可接受的,即使括号不是必需的。所以你给出的例子在两种情况下都是可以接受的。

答案 3 :(得分:0)

typeof运算符不是函数。您可以用括号括起操作数,以便表达式看起来像一个函数调用,但括号将只是作为一个分组操作符(仅次于默认啄食顺序中的逗号操作符!)。实际上,您可以使用各种标点符号来装饰操作数,而不会使运算符脱轨。

typeof (2) //"number"
typeof(2) //"number"
typeof ("a", 3) //"number"
typeof (1 + 1) //"number"