肢体感觉优先于平等。
因此,据我了解,优先级较高的是首先评估的。
现在让我们比较未定义的a
:
if (a == 1) { .. // throws an exception because a is not defined
实际案例:
if (typeof a !== 'undefined' && (a == 1)) {
console.log(1)
} else {
console.log(2)
}
应按以下顺序进行评估:
但是,如果未定义a但未定义,通常会引发异常。
为什么方程式的左侧优先级较低,但为什么会首先对其求值?
编辑:我改写了'||'中的示例到&&
只是因为||
总是会抛出。
答案 0 :(得分:1)
||
被评估为left-to-right:
5逻辑或从左到右…|| …
因此,首先被求值的内部表达式是typeof a
,是typeof a !== 'undefined'
的一部分。
如果||
的右侧包含更多嵌套在括号中的表达式,而不论其运算符的优先级如何,则仅在对||
的左侧进行求值后才对它们进行求值