JavaScript中.get的等价物是什么?
d = {'hello':'abc'}
d.get('hello','default_val');
上面是用Python写的。请问在JavaScript中怎么做呢?我想要在找不到某个键的时候,能够设置一个默认值。
4 个回答
使用 解构赋值:
const { hello = 'default_val' } = d
JavaScript中的逻辑或运算符是有“短路”特性的。这意味着你可以这样做:
d["hello"] || "default_val";
你有(至少)四到五种选择:
在现代环境中,你可能会使用 空值合并运算符 (
??
):x = obj.key ?? "default";
如果
obj.key
的结果是undefined
或null
,那么就会使用"default"
;如果obj.key
的结果是其他任何值(包括一些假值,比如""
),那么就会使用那个值。在没有
??
的旧环境中,你可以使用 非常强大的||
运算符:x = obj.key || "default";
如果
obj.key
的结果是任何 假值(包括""
),那么会使用"default"
;否则,就会使用那个值。一般来说,你会想用??
而不是||
,因为它更准确地检查“缺失”的值。这个方法现在已经过时了,
??
可以处理这种情况。对于||
不适用的情况,可以使用in
运算符:x = "key" in obj ? obj.key : "default";
in
可以告诉我们一个对象是否有某个特定的属性。注意,键是一个字符串(属性名是字符串或符号;如果你使用的是符号,你会知道的)。所以如果obj.key
可能是有效的0
,你就应该使用这个方法,而不是上面的第一种。in
(和obj.key
)会查找对象本身 或 对象的原型链中的键。如果你只想检查对象本身,而不想检查原型链,在现代环境中可以使用Object.hasOwn
:x = Object.hasOwn(obj, "key") ? obj.key : "default";
在没有
hasOwn
的旧环境中,你可以使用一个补丁,或者使用hasOwnProperty
(但要小心,因为对象可能有自己的hasOwnProperty
方法,这可能不准确):x = obj.hasOwnProperty("key") ? obj.key : "default";
如果你不想排除
null
,可以专门检查undefined
:x = typeof obj.key !== "undefined" ? obj.key : "default";
这样做会在
obj
没有那个属性 或 有那个属性但属性的值是undefined
时使用默认值。