为什么“typeof”不需要括号?

时间:2013-04-05 21:22:00

标签: javascript typeof

typeof (myVariable)typeof myVariable相比有什么区别吗?

两者都有效,但是来自PHP,我不明白为什么这个函数可以使用括号。

1 个答案:

答案 0 :(得分:61)

typeof关键字代表Javascript编程中的运算符

specificationtypeof运算符的正确定义是:

typeof[(]expression[)] ;

这就是将typeof用作typeof(expression)typeof expression的原因。

为什么已经实现它可能是让开发人员处理他的代码中的可见性级别。因此,可以使用typeof:

来使用干净的条件语句
if ( typeof myVar === 'undefined' )
  // ...
;

使用grouping operator定义更复杂的表达式:

const isTrue = (typeof (myVar = anotherVar) !== 'undefined') && (myVar === true);

编辑:

在某些情况下,使用带有typeof运算符的括号会使编写的代码不易产生歧义。

以下面的表达式为例,其中使用typeof运算符而没有括号。 typeof会返回空字符串文字与数字或字符串文字类型之间串联结果的类型吗?

typeof "" + 42

查看上述运算符的定义和precedence of the operators typeof and +,看起来前面的表达式相当于:

typeof("") + 42 // Returns the string `string42`

在这种情况下,使用带typeof的括号可以更清晰地表达您想要表达的内容:

typeof("" + 42) // Returns the string `string`