は
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 番目のものでは、タイプのチェックにも===
代わりに使用する必要があります。==