2

mainobj.object_1 = mainobj.object_1 || []

より良い if (mainobj.object_1 == undefined){ mainobj.object_1 = []; }

最初の例では、javascript がその値をそれ自体に再割り当てするように見えますが、そうではないかもしれません。

最初の例に加えて、それ自身の値をそれ自体に再割り当てするか、値を持つものを何もしませんか?

4

4 に答える 4

0

オブジェクトがnull、空の文字列、ゼロ、未定義、NaN、またはfalseの場合、javascriptはfalseを返すため、未定義かどうかを確認する場合は、2番目の例を使用する必要があります。

そのため、コードから正確に何を求めているかについてです。

于 2013-03-11T18:30:26.837 に答える
-1

彼らはほとんど同じことをします。

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 || [];コーディングの好みについては、簡潔で読みやすいため、開発者は短い形式を好むでしょう。

于 2013-03-11T18:34:16.433 に答える
-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ないことに注意する必要があります。

于 2013-03-11T18:34:48.453 に答える
-2

どちらも正しいです。1枚目はすっきり。しかし、2 番目のものでは、タイプのチェックにも===代わりに使用する必要があります。==

于 2013-03-11T18:28:52.950 に答える