javascript - 有人可以解释一下为什么“运算符优先级”适用于 javaScript 中的“||”、“&&”等逻辑运算符
问题描述
有人能解释一下为什么运算符优先级适用于 JavaScript 中的||
和等逻辑运算符吗?&&
这在以下操作中意味着什么:
真 || 假 && 假
false && false
因为&&
运算符的优先级高于||
JavaScript 中的运算符,所以首先计算 the。根据我所知道的false && false
,JavaScript 引擎不会评估它,因为在 || 之前 运算符有一个true
文字,当某些东西在运算符true
之前时,将不会评估运算||
符之后的东西,||
这在 JavaScript 中称为“逻辑运算符的短路”,另一个示例将是:
真 || 警报()
即使函数调用的优先级高于||
运算符,函数调用也不会发生,另一个例子是
真 || x = 7
如果在 JavaScript 中逻辑运算符的短路是真的,那么上面的代码一定不能给出错误,因为x = 7没有被计算,因为在||
运算符之前有一个true
文字。
解决方案
运算符优先级仅确定分组,而不是实际的评估顺序: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)
推荐阅读
- tensorflow - tf.kerasConv2D 中的 InvalidArgumentError
- ios - 在哪里可以找到我需要在移动模拟器上测试的应用程序的 .ipa 文件?
- firebase - 如何在 Flutter Firebase Firestore 中捕获 Client is Offline 错误
- apache-kafka - 错误运行消费者时出现未知错误:org.apache.kafka.common.errors.SerializationException:未知魔术字节
- c++ - 错误是:对“max”的引用不明确
- node.js - 使用 TypeORM 将数据存储为 JSON 对象数组,而不仅仅是 Postgres 中的 JSON 对象
- bash - 如何使用 SSH 客户端在远程主机上运行本地代码?
- powershell - 在 Powershell 中使用 Grep 每分钟报告一次关键字的出现
- rundeck - RunDeck 的输入选项的最大长度是多少?
- postgresql - 更新和替换包含多个引号 postgresql 的字符串