gpt4 book ai didi

javascript - 为什么 "and"在 "equal"之前评估

转载 作者:行者123 更新时间:2023-11-30 09:33:25 27 4
gpt4 key购买 nike

在 Javascript 中 precedence strict equal (10) 大于 logical and (6) 那么这段代码是如何工作的

var a;
console.log("value of a is", a);
if (a && a.test === "test") {}

它不应该抛出错误吗

cannot read test of undefined.

而且member access的伤口优先级比它们都高(19)。

我错过了什么?

最佳答案

一些编程语言,如 JavaScript,会延迟计算逻辑表达式。这意味着如果表达式的第一部分 (a) 为假,解释器甚至认为没有理由执行第二部分 (a.test === "test"),因此不会抛出任何错误。

需要澄清的是,优先级并未定义表达式执行的实际顺序,仅定义了有效顺序。因此,member access 运算符具有最高优先级并不意味着它将首先执行。解释器仍然可以首先评估 a,而不影响任何更高优先级运算符的结果。您可以将优先级视为隐式括号,如果您将表达式写为 (a) && ((a.test) === "test") 您可以清楚地看到 a 可以而且将首先被计算,因为它位于表达式的最左边。

关于javascript - 为什么 "and"在 "equal"之前评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44964246/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com