是
mainobj.object_1 = mainobj.object_1 || []
好于
if (mainobj.object_1 == undefined){
mainobj.object_1 = [];
}
在第一个示例中,javascript 似乎会将其值重新分配给自身,但可能不会。
除了第一个示例之外,还会将自己的值重新分配给自己,还是不做任何有价值的事情?
是
mainobj.object_1 = mainobj.object_1 || []
好于
if (mainobj.object_1 == undefined){
mainobj.object_1 = [];
}
在第一个示例中,javascript 似乎会将其值重新分配给自身,但可能不会。
除了第一个示例之外,还会将自己的值重新分配给自己,还是不做任何有价值的事情?
如果要检查它是否只是未定义,则必须使用第二个示例,因为如果对象为 null、空字符串、零、未定义、NaN 或 false,javascript 将返回 false。
所以它是关于你想要从你的代码中得到什么。
他们做几乎相同的事情。
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 || [];
,因为它简洁易读。
最好是
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);
这里的警报显示为空而不是假。请记住0
, false
, null
, undefined
, ""
(empty string),NaN
在 Javascript 中都是错误的。
另外,您需要记住这undefined
不是javascript中的保留字
两者都是正确的。第一个很整洁。但在第二个中,您也应该使用===
而不是==
检查类型。