什么';在javascript中,它相当于.get?
上面是python。如何在javascript中实现这一点?如果找不到键,我希望能够设置默认值。您(至少)有四个选项:什么';在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"; 中的告诉我们对象是否具有具有给定
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
没有该属性,则使用默认值;如果它有该属性,但该属性的值是未定义的
,则使用默认值
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';