gpt4 book ai didi

javascript - if (obj.nonExistent Property) 是否触发任何浏览器错误?

转载 作者:行者123 更新时间:2023-11-30 12:49:59 25 4
gpt4 key购买 nike

我正在遍历一组简单(JSON 样式)对象,其中一些具有给定属性,而另一些则没有。如果它们具有该属性,可以安全地假设它永远不会计算为假值。

var objs = [
{'a': 1, 'b': 2, 'c': 3},
{'a': 4, 'b': 5},
{'a': 7, 'b': 8, 'c': 9}
];

我的相当大的应用程序在 Internet Explorer 8 中触发了一些(非常无用的)错误,所以我只想将其从潜在问题列表中划掉。使用安全吗:

for (var i = 0; i < objs.length; ++i) {
if (objs[i].c) {
// objs[i].c is defined
}
}

我在应用程序代码中多次使用这种检查,但我是否需要使用 obj.hasOwnProperty('c')typeof obj.c != “未定义”?

谢谢。

最佳答案

... it's safe to assume that it will never evaluate to a falsy value.

不,这不安全。如果你有一个像 {'a': 1, 'b': 2, 'c': 0} 这样的对象,objs[i].c 将是评估虚假。 (或者 c 等于 falseNaNnullundefined''.)

如果你只想知道,如果对象中定义了一个属性,你可以在 objs[i] 中执行 'c',但要注意,这也将包括原型(prototype)链中的属性.

如果你想避免从原型(prototype)链中获取属性,需要进行hasOwnProperty检查。

还有 Object.keys在现代浏览器中可用,但在快速检查时不方便。

关于javascript - if (obj.nonExistent Property) 是否触发任何浏览器错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21291530/

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