是
mainobj.object_1 = mainobj.object_1 || []
if (mainobj.object_1 == undefined){
mainobj.object_1 = [];
}
在第一个例子中,似乎javascript会将其值重新分配给自己,但可能不会。
另外第一个例子会将自己的值重新分配给自己还是不做任何有值的事情?
答案 0 :(得分:0)
如果你想检查它是否只是未定义你必须使用第二个例子,因为如果对象为空,javascript返回false,空字符串,零,未定义,NaN或false。
所以关于你的代码到底想要什么。
答案 1 :(得分:-1)
他们几乎做同样的事情。
mainobj.object_1 = mainobj.object_1 || []
查看mainobj.object_1
以查看它是否undefined
而不是null
,否则请指定[]
;
if (mainobj.object_1 == undefined){ mainobj.object_1 = []; }
在与mainobj.object_1
进行比较之前,我会对undefined
进行类型强制。通常更好地使用===
严格比较而不是==
,它更快更明确。如果你要使用严格的比较,你必须将你的陈述调整为:
if (mainobj.object_1 === undefined || mainobj.object_1 === null){ mainobj.object_1 = []; }
至于编码偏好,开发人员更喜欢较短的格式mainobj.object_1 = mainobj.object_1 || [];
,因为它简洁易读。
答案 2 :(得分:-1)
最好是
if(typeof mainobj.object_1 === "undefined"){
mainobj.object_1 = [];
}
但是如果你想检查null,那么也必须添加 null检查。
第一种方法可能导致不受欢迎的事情。考虑以下示例
var mainobj = {};
mainobj.object_1 = false;
mainobj.object_1 = mainobj.object_1 || [];
alert(mainobj.object_1);
此处警报读取为空而不是false。记住0
,false
,null
,undefined
,""
(空字符串),NaN
都是假的在Javascript。
此外,您需要记住,undefined
不是 javascript中的保留字
答案 3 :(得分:-2)
两者都是正确的。第一个是整洁的。
但在第二个问题中,您应该使用===
代替==
来检查类型。