JavaScript中.get的等价物是什么?

26 投票
4 回答
8972 浏览
提问于 2025-04-16 22:25
d = {'hello':'abc'}
d.get('hello','default_val');

上面是用Python写的。请问在JavaScript中怎么做呢?我想要在找不到某个键的时候,能够设置一个默认值。

4 个回答

2

使用 解构赋值

const { hello = 'default_val' } = d
5

JavaScript中的逻辑或运算符是有“短路”特性的。这意味着你可以这样做:

d["hello"] || "default_val";
34

你有(至少)四到五种选择:

  1. 在现代环境中,你可能会使用 空值合并运算符 (??):

    x = obj.key ?? "default";
    

    如果 obj.key 的结果是 undefinednull,那么就会使用 "default";如果 obj.key 的结果是其他任何值(包括一些假值,比如 ""),那么就会使用那个值。

    在没有 ?? 的旧环境中,你可以使用 非常强大的 || 运算符

    x = obj.key || "default";
    

    如果 obj.key 的结果是任何 假值(包括 ""),那么会使用 "default";否则,就会使用那个值。一般来说,你会想用 ?? 而不是 ||,因为它更准确地检查“缺失”的值。

  2. 这个方法现在已经过时了,?? 可以处理这种情况。对于 || 不适用的情况,可以使用 in 运算符:

    x = "key" in obj ? obj.key : "default";
    

    in 可以告诉我们一个对象是否有某个特定的属性。注意,键是一个字符串(属性名是字符串或符号;如果你使用的是符号,你会知道的)。所以如果 obj.key 可能是有效的 0,你就应该使用这个方法,而不是上面的第一种。

  3. in(和 obj.key)会查找对象本身 对象的原型链中的键。如果你只想检查对象本身,而不想检查原型链,在现代环境中可以使用 Object.hasOwn

    x = Object.hasOwn(obj, "key") ? obj.key : "default";
    

    在没有 hasOwn 的旧环境中,你可以使用一个补丁,或者使用 hasOwnProperty(但要小心,因为对象可能有自己的 hasOwnProperty 方法,这可能不准确):

    x = obj.hasOwnProperty("key") ? obj.key : "default";
    
  4. 如果你不想排除 null,可以专门检查 undefined

    x = typeof obj.key !== "undefined" ? obj.key : "default";
    

    这样做会在 obj 没有那个属性 有那个属性但属性的值是 undefined 时使用默认值。

撰写回答