Garantiert die Verwendung von undefiniert als Eigenschaftsschlüssel, dass das Ergebnis undefiniert ist?
P粉504920992
P粉504920992 2024-01-16 23:42:26
0
1
503

Beim Abrufen von Objekteigenschaften über Variablen gilt:

myObject[someField]

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

anyObject[undefined] === undefined

Ist das ein bekanntes Verhalten, kann ich ihm vertrauen? Ich kann in der entsprechenden Dokumentation anscheinend nichts finden. Meine Alternative besteht darin, das Obige in

umzuschreiben
someField ? myObject[someField] : undefined;

Aber wenn es garantiert ist, dass wir bei jedem Versuch, auf das Grundstück zuzugreifen undefined 时都会返回 undefined, dann würde ich wirklich den prägnanten Weg vorziehen.

P粉504920992
P粉504920992

Antworte allen(1)
P粉340980243

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

你确实应该写

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

如果 someField: 未定义 |字符串

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage