2016-09-23 146 views
0

我刚刚执行控制台以下:为什么`typeof false || undefined`返回“布尔”

typeof false || undefined // "boolean" 

虽然我希望它返回“未定义”,因为

typeof undefined // "undefined" 

为什么会返回“布尔” ?如果之前评估为falsey值,那么OR运算符是否应该返回最后一个参数?所以false || undefined返回undefinedtypeof执行对undefined

+2

'typeof运算FALSE'返回字符串'boolean'这是真的 – Maxx

+0

@Maxx,我知道,我的问题是在最后一段 –

+1

'typeof(false || undefined)'是你的解决方案 – Maxx

回答

8

您没有注意到运算符的优先顺序!

> typeof false || boolean // (typeof false) || boolean 
"boolean" 
> typeof (false || boolean) 
"undefined" 
0

OR操作,只要它不是falsy返回左参数。

在你的榜样,我们已经有了这样的:

(typeof false) || undefined

typeof false回报"boolean",这是不falsy,所以它返回,而不是undefined

0

考虑代码:

typeof false || undefined 

typeof false将返回 “布尔”,因此,它将成为 "boolean" || undefined

最终输出将是 “布尔”

相关问题