什么';在javascript中,它相当于.get?

什么';在javascript中,它相当于.get?,javascript,python,Javascript,Python,上面是python。如何在javascript中实现这一点?如果找不到键,我希望能够设置默认值。您(至少)有四个选项: 在许多情况下,您可以使用: 这意味着:将x设置为obj.key,除非obj.key为falsy,在这种情况下,请使用“default”。falsy值是未定义,空,0,NaN,“,当然还有假。因此,如果obj.key可能有效地为0或任何其他值,则不希望使用它 对于|不适用的情况,在操作符中有: x = obj.key || "default"; 中的告诉我们对象是否具有具有给定

上面是python。如何在javascript中实现这一点?如果找不到键,我希望能够设置默认值。

您(至少)有四个选项:

  • 在许多情况下,您可以使用:

    这意味着:将
    x
    设置为
    obj.key
    ,除非
    obj.key
    为falsy,在这种情况下,请使用
    “default”
    。falsy值是
    未定义
    0
    NaN
    ,当然还有
    。因此,如果
    obj.key
    可能有效地为
    0
    或任何其他值,则不希望使用它

  • 对于
    |
    不适用的情况,在
    操作符中有

    x = obj.key || "default";
    
    中的
    告诉我们对象是否具有具有给定键的属性。注意,键是一个字符串(属性名是字符串或符号;如果您使用的是符号,您就会知道)。因此,如果
    obj.key
    可能是有效的
    0
    ,则您希望使用该键,而不是上面的#1

  • 中的
    将在对象或对象的原型链中找到一个键(例如,如果检索属性,将从所有位置获取该键)。如果只想检查对象本身而不是其原型链,可以使用
    hasOwnProperty

    x = "key" in obj ? obj.key : "default";
    
  • 特别检查是否存在未定义的

    x = obj.hasOwnProperty("key") ? obj.key : "default";
    
    如果
    obj
    没有该属性,则使用默认值;如果它有该属性,但该属性的值是
    未定义的
    ,则使用默认值

  • Javascript的功能是。你可以做:

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

    d["hello"] || "default_val";
    
    使用:

    const{hello='default\u val'}=d
    
    哇,我从来不知道这一点。这在其他语言(特别是PHP)中也适用吗?蒂姆:我对PHP的了解还不足以回答这个问题。在大多数语言(C,C++,C,java)中,<代码> > <代码>只返回<代码>真< /COD>或<代码> false 。JavaScript的版本更有趣,更符合“函数式”编程风格。(顺便说一句,
    &&
    做了一些类似的事情:如果左边的东西是“truthy”,它会给你右边的东西,如果不是,
    false
    。@TJCrowder,我刚刚测试了它,它在PHP中不起作用:(…无论如何,谢谢=)@蒂姆:但它在and.FWIW中是这样的,它的工作原理与
    helloVar=d.hello|||'default|val'完全相同是的,但是
    。|124;更短,可读性更强。太糟糕了,它在其他语言中不起作用,它肯定会让我很开心:p!尝试下面给出的答案:这可能会产生误导-如果值为falsy,则会触发OR。
    
    d["hello"] || "default_val";
    
    var d = {'hello':'abc'};
    var helloVar = d.hello ? d.hello : 'default_val';