繁体   English   中英

为什么“typeof”不需要括号? [关闭]

[英]Why does “typeof” not need parentheses? [closed]

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

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

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

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

typeof[(]expression[)] ;

这就是使用typeof作为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`

在这种情况下,将括号与typeof一起使用将使您试图表达的内容更加清晰:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM