如果第一个条件失败,为什么 javascript 评估多个 AND 条件
Why does javascript evaluate multiple AND criterias if first criteria failed
即使第一个条件失败,javascript 是否真的会进一步评估为多个 AND 条件语句?
我有以下声明:
if(data.equipment_notifications != "undefined" && data.equipment_notifications.length > 0)
我假设条件会在初始条件下失败,甚至不会尝试评估第二个,因为如果第一个失败(假),则整个条件在涉及到 AND 时将始终为假,因此它会跳过一个向前走。
但我得到 "Cannot read property 'length' of undefined",这表明它不会在第一个失败的条件之后跳过。
问题: javascript 是否会评估语句的整个标准,即使第一个失败,并且无论如何都必然会失败整个语句对剩余标准的评估 ?
更新: javascript 中的表达式求值时给出的答案是正确的。此外,我发现我在 "undefined"
的测试中犯了一个忘记 typeof 的愚蠢错误
if(typeof data.equipment_notifications != "undefined" && data.equipment_notifications.length > 0)
Why does javascript evaluate multiple AND criterias if first criteria failed
没有。
Is it true that javascript will evaluate the whole criteria of a statement, even if failing the first and be bound to fail the whole statement no matter the evaluation of the remaining criteria(s)?
不,这不是真的。 JavaScript 使用 short-circuit evaluation.
这很容易向你自己证明:
function a() { alert('a'); return false}
function b() { alert('b'); return true }
if (a() && b()) { alert('c') }
如果 JavaScript "evaluated the whole exression",它会同时提醒 a
和 b
。但是,因为 &&
的第一个操作数是 false,所以 JavaScript 不计算第二个。
But i get "Cannot read property 'length' of undefined" which indicates that it does not skip after the first failed criteria.
不,这根本不是这个意思。您正在测试 字符串 "undefined"
。 undefined
和 "undefined"
是两个截然不同的东西。
即使第一个条件失败,javascript 是否真的会进一步评估为多个 AND 条件语句?
我有以下声明:
if(data.equipment_notifications != "undefined" && data.equipment_notifications.length > 0)
我假设条件会在初始条件下失败,甚至不会尝试评估第二个,因为如果第一个失败(假),则整个条件在涉及到 AND 时将始终为假,因此它会跳过一个向前走。
但我得到 "Cannot read property 'length' of undefined",这表明它不会在第一个失败的条件之后跳过。
问题: javascript 是否会评估语句的整个标准,即使第一个失败,并且无论如何都必然会失败整个语句对剩余标准的评估 ?
更新: javascript 中的表达式求值时给出的答案是正确的。此外,我发现我在 "undefined"
的测试中犯了一个忘记 typeof 的愚蠢错误if(typeof data.equipment_notifications != "undefined" && data.equipment_notifications.length > 0)
Why does javascript evaluate multiple AND criterias if first criteria failed
没有。
Is it true that javascript will evaluate the whole criteria of a statement, even if failing the first and be bound to fail the whole statement no matter the evaluation of the remaining criteria(s)?
不,这不是真的。 JavaScript 使用 short-circuit evaluation.
这很容易向你自己证明:
function a() { alert('a'); return false}
function b() { alert('b'); return true }
if (a() && b()) { alert('c') }
如果 JavaScript "evaluated the whole exression",它会同时提醒 a
和 b
。但是,因为 &&
的第一个操作数是 false,所以 JavaScript 不计算第二个。
But i get "Cannot read property 'length' of undefined" which indicates that it does not skip after the first failed criteria.
不,这根本不是这个意思。您正在测试 字符串 "undefined"
。 undefined
和 "undefined"
是两个截然不同的东西。