为什么“typeof”不需要括号?
问题描述:
typeof (myVariable)
与typeof myVariable
相比有什么区别?为什么“typeof”不需要括号?
这两个工作,但来自PHP,我不明白为什么这个函数可以使用括号或不。
答
typeof
关键字代表运营商在Javascript
编程。
为typeof
运营商在specification正确的定义是:
typeof[(]expression[)] ;
这是利用typeof
作为typeof(expression)
或typeof expression
背后的原因。
即将到来为什么它已被实现,因此可能会让开发人员处理其代码中的可见性级别。因此,可以使用typeof使用干净的条件语句:
if (typeof myVar === 'undefined')
// ...
;
或者说明使用()
的可读性的原因更复杂的表达式:
var 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`
这不是一个函数。 – 2013-04-05 21:22:49
要添加,它是一个类似于'+'或'-'的运算符https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/typeof – 2013-04-05 21:23:25
因为'typeof'是一个运算符,而不是一个函数。 – jmoerdyk 2013-04-05 21:23:30