我刚刚在控制台中执行了以下操作:
typeof false || undefined // "boolean"
虽然我预计它会返回"未定义",但由于
typeof undefined // "undefined"
为什么它返回"boolean"?如果之前的值为false,那么OR
运算符不应该返回最后一个参数吗?那么false || undefined
返回undefined
并且针对undefined
执行typeof
?
您没有遵守运算符优先级
> typeof false || boolean // (typeof false) || boolean
"boolean"
> typeof (false || boolean)
"undefined"
OR
运算符返回左参数,只要它不是错误的。
在你的例子中,我们得到了这个:
(typeof false) || undefined
typeof false
返回"boolean"
,这不是伪造的,所以它被返回而不是undefined
。
考虑代码:
typeof false || undefined
typeof false
将返回"boolean",因此它将变为"boolean" || undefined
最终输出为"布尔">