Heim > Fragen und Antworten > Hauptteil
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
umzuschreibensomeField ? 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粉3409802432024-01-17 12:46:19
不,访问 obj[undefined]
并不总是返回 undefined
。与用作属性名称的任何值一样,undefined
将被强制转换为字符串(除非它是符号),因此它实际上会访问名为“undefined”的属性。 obj[undefined]
等价于 obj["undefined"]
或 obj.undefined
。如果存在这样的属性,它将返回属性值,例如当 obj = {undefined: true};
.
你确实应该写
someField != null ? myObject[someField] : undefined;
如果 someField: 未定义 |字符串
。