有人能解释一下原因吗;运算符优先级“;适用于逻辑运算符,如||&引用&引用&&&引用;在javaScript中
有人能解释一下为什么运算符优先级适用于JavaScript中的逻辑运算符,如有人能解释一下原因吗;运算符优先级“;适用于逻辑运算符,如||&引用&引用&&&引用;在javaScript中,javascript,logical-operators,operator-precedence,short-circuiting,short-circuit-evaluation,Javascript,Logical Operators,Operator Precedence,Short Circuiting,Short Circuit Evaluation,有人能解释一下为什么运算符优先级适用于JavaScript中的逻辑运算符,如|和&?在这样的操作中,这意味着什么: true | |false&&false 首先计算false&&false,因为&运算符的优先级高于JavaScript中的|运算符。据我所知,JavaScript引擎不会计算false&&false,因为在| | |操作符之前有一个true文本,当操作符之前有true时,|操作符之后的东西将不会被计算,这被称为JavaScript中的“逻辑运算符短路”另一个示例是: true |
|
和&
?在这样的操作中,这意味着什么:
true | |false&&false
首先计算false&&false
,因为&
运算符的优先级高于JavaScript中的|
运算符。据我所知,JavaScript引擎不会计算false&&false
,因为在| | |操作符之前有一个true
文本,当操作符之前有true
时,|
操作符之后的东西将不会被计算,这被称为JavaScript中的“逻辑运算符短路”另一个示例是:
true |alert()
即使函数调用的优先级高于|
运算符,函数调用也不会发生,另一个例子是
真| |x=7
如果JavaScript中的逻辑运算符短路为真,则上述代码不得给出错误,因为未计算x=7,因为在|
运算符之前有一个true
文本。运算符优先级仅确定分组,而不是实际的计算顺序:
true | | false&&false
变为true | | |(false&&false)
但仍然从左到右求值
true | | alert()
被评估为true | |(alert())
,而不是(true | | alert)(
true | | x=7
计算为(true | | x)=7
并导致错误,而不是true | |(x=7)
您有两个部分,求值顺序和优先级。优先级表示true | | false和&false
等于true | | |(false和&false)
而不是(true | false)&&false
。您可以看到表达式外的树是如何构建的,然后根据求值顺序对该树求值。因此,您的意思是这里发生的事情完全是求值顺序的结果运算符的
不是运算符的求值顺序,而是表达式的求值顺序。有一个具有运算符优先级的表达式,用于定义运算符和操作数的分组方式。你有一个求值顺序,它定义了那些由操作符优先级定义的分组的求值顺序,如果有提前退出的情况,已经求值的部分足以知道表达式的结果。我将重写注释作为答案。在这里,但我需要一些时间。由于编辑和合并注释是不可能的,整个过程变得混乱和误导。但是如果|
运算符的正确操作具有更高的优先级,为什么不首先计算该操作