首页 > 解决方案 > 有人可以解释一下为什么“运算符优先级”适用于 javaScript 中的“||”、“&&”等逻辑运算符

问题描述

有人能解释一下为什么运算符优先级适用于 JavaScript 中的||和等逻辑运算符吗?&&这在以下操作中意味着什么:

真 || 假 && 假

false && false因为&&运算符的优先级高于||JavaScript 中的运算符,所以首先计算 the。根据我所知道的false && false,JavaScript 引擎不会评估它,因为在 || 之前 运算符有一个true文字,当某些东西在运算符true之前时,将不会评估运算||符之后的东西,||这在 JavaScript 中称为“逻辑运算符的短路”,另一个示例将是:

真 || 警报()

即使函数调用的优先级高于||运算符,函数调用也不会发生,另一个例子是

真 || x = 7

如果在 JavaScript 中逻辑运算符的短路是真的,那么上面的代码一定不能给出错误,因为x = 7没有被计算,因为在||运算符之前有一个true文字。

标签: javascriptlogical-operatorsoperator-precedenceshort-circuitingshort-circuit-evaluation

解决方案


运算符优先级仅确定分组,而不是实际的评估顺序:https ://stackoverflow.com/a/46506130

  • true || false && false变为true || (false && false)但仍从左到右进行评估。

  • true || alert()被评估为true || (alert())而不是(true || alert)()

  • true || x = 7被评估为(true || x) = 7并导致错误,NOTtrue || (x = 7)


推荐阅读