为什么"类型错误||未定义"返回"boolean"



我刚刚在控制台中执行了以下操作:

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

最终输出为"布尔">

最新更新