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

唐P:

是否有任何区别typeof (myVariable)比较typeof myVariable

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

哈利姆·卡鲁姆(Halim Qarroum):

typeof关键字表示运营商Javascript节目。

规范中typeof运算符的正确定义是:

typeof[(]expression[)] ;

这就是使用typeofas typeof(expression)typeof expression的原因

谈到为什么如此实现它,可能是为了让开发人员处理其代码中的可见性级别。因此,可以使用typeof使用干净的条件语句:

if ( typeof myVar === 'undefined' )
  // ...
;

或者使用分组运算符定义更复杂的表达式

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

编辑:

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

以下面的表达式为例,其中typeof运算符不带括号。typeof返回空字符串文字和数字之间的级联结果的类型,还是字符串文字的类型?

typeof "" + 42

综观上述操作者的定义和运算符的优先级typeof+,看来前面的表达式是等效于:

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

在这种情况下,使用括号with typeof将使您要表达的内容更加清晰:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章