typeof (myVariable)
与typeof myVariable
相比有什么区别吗?
两者都有效,但是来自PHP,我不明白为什么这个函数可以使用括号。
答案 0 :(得分:61)
typeof
关键字代表Javascript
编程中的运算符。
specification中typeof
运算符的正确定义是:
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`