gpt4 book ai didi

javascript - 为什么 JavaScript 中使用 && 运算符可以防止 TypeError 异常?

转载 作者:行者123 更新时间:2023-11-28 18:31:32 25 4
gpt4 key购买 nike

假设我有一个变量x声明为:var x。现在,当我尝试访问 x 的名为 value 的属性时,我会收到类型错误,因为 value 不存在。现在,如果我在控制台中运行 x.value,我将得到一个明确的类型错误异常。但是如果我使用 undefined && x.value 我不会得到类型错误;返回未定义。所以我推断 undefined && non-existing 返回 undefined。同样,我认为像 undefined && random786 这样的东西也应该返回 undefined。但它给出了类型错误。所以,

Why does undefined && random786 -- where random786 is not declared anywhere -- give a type error while undefined && x.value doesn't give any type error?

最佳答案

如果&&左侧的表达式计算结果为undefined(或null0""NaNfalse),则根本不计算右侧。未声明的 random786 和“value”不是对象属性的 x.value 都不会导致错误。

对于对象属性,对不存在的属性的引用不会导致错误。因此:

if (x.someProperty)

只要x的值是一个对象,就不会抛出异常。如果您的代码假设“someProperty”确实存在并且它类似于函数引用,那么您就会开始遇到问题:

x.someProperty();

当没有“someProperty”(或者它不是函数)时抛出异常,因此这是相当常见的习惯用法

x.someProperty && x.someProperty();

关于javascript - 为什么 JavaScript 中使用 && 运算符可以防止 TypeError 异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37907311/

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