gpt4 book ai didi

javascript - 这是检查属性是否存在或分配一个的安全方法吗?

转载 作者:行者123 更新时间:2023-11-30 08:20:27 24 4
gpt4 key购买 nike

以下是 MDN 示例的摘录

var d = withValue.d || (
withValue.d = {
enumerable: false,
writable: false,
configurable: false,
value: value
}
);

这是一种安全的方法来检查属性是否存在,否则分配和初始化它吗?如果没有,是否有更好、更安全和优化的方法?

最佳答案

不,这不安全,因为该属性可能确实存在于对象上但为假,在这种情况下 withValue.d || 将失败并继续交替,将对象分配给 d 属性,尽管 d 属性已经存在。请改用 hasOwnProperty,不要将赋值放在需要表达式的地方:

if (!withValue.hasOwnProperty('d')) {
withValue.d = {
enumerable: false,
writable: false,
configurable: false,
value: value
}
}
const { d } = withValue;

如果 d 属性存在,将始终是一个对象,那么您的原始代码将有效,因为对象始终是真实的。 (虽然代码仍然有点臭,因为赋值表达式)

关于javascript - 这是检查属性是否存在或分配一个的安全方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54374782/

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