は
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を返すため、未定義かどうかを確認する場合は、2番目の例を使用する必要があります。
そのため、コードから正確に何を求めているかについてです。
彼らはほとんど同じことをします。
mainobj.object_1 = mainobj.object_1 || []
mainobj.object_1それが notundefinedおよび notであるかどうかを確認し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);
ここで、アラートは false ではなく empty と表示されます。0, false, null, (空の文字列)undefinedは、Javascriptではすべて false です。"" NaN
また、 javascript の予約語でundefinedはないことに注意する必要があります。
どちらも正しいです。1枚目はすっきり。しかし、2 番目のものでは、タイプのチェックにも===代わりに使用する必要があります。==