使用 undefined 作为属性键是否保证结果将是未定义的?
P粉504920992
P粉504920992 2024-01-16 23:42:26
0
1
499

在通过变量检索对象属性的情况下,即:

myObject[someField]

someField(它是一个字符串)有可能是未定义(可能是未初始化的字符串值的结果)。我的实验表明,对于我能想到的所有类型的对象,结果都是未定义,即:

anyObject[undefined] === undefined

这是一种众所周知的行为,我可以信赖吗?似乎无法在相关文档中找到某些内容,我的替代方案是将上面的内容重写为

someField ? myObject[someField] : undefined;

但如果能保证每当我们尝试访问属性 undefined 时都会返回 undefined,那么我真的更喜欢简洁的方式。

P粉504920992
P粉504920992

全部回复(1)
P粉340980243

不,访问 obj[undefined] 并不总是返回 undefined。与用作属性名称的任何值一样,undefined 将被强制转换为字符串(除非它是符号),因此它实际上会访问名为“undefined”的属性。 obj[undefined] 等价于 obj["undefined"]obj.undefined。如果存在这样的属性,它将返回属性值,例如当 obj = {undefined: true};.

你确实应该写

someField != null ? myObject[someField] : undefined;

如果 someField: 未定义 |字符串

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板