通常の方法は、次を使用することです。
var obj = obj || {};
そのコードが実行されると、値が割り当てられていない可能性がありますがobj
、(宣言のために)定義されていることを確認できます。var
の値がobj
「falsey」値に解決される場合は、新しいオブジェクトへの参照を割り当てます。
考えられる結果は次のとおりです。
値が割り当てられていない場合obj
は、新しいオブジェクト参照が割り当てられます。
以前に「falsey」値が割り当てられていた場合obj
は、新しいオブジェクト参照に置き換えられます(falsey値が割り当てられたコードが混乱する可能性があります)。
obj
以前に「真の」プリミティブ値が割り当てられている場合、次のプロパティの割り当てはobj
エラーをスローし、スクリプトの実行は停止します。
obj
がすでに以外のオブジェクトへの参照である場合、null
プロパティの後続の割り当てはそのオブジェクトになります。オブジェクトの種類によっては、問題ない場合があります。か否か。おそらく、あなたのコントロール外の何かがオブジェクトを作成したので、あなたの知らないうちにそれを変更または破壊するかもしれません。あなたは何をしますか?
一般に、javascriptでは、対処しているのが自分ではないケース2と3、または4を処理するobj
ことはできません。したがって、他の名前と衝突する可能性が低い名前を使用して、#1または#4を取得し、うまくいくことを願っています。
ちなみに、あなたの後に追加されたコードは、コードが実行された時点で#1を持っていたとしても、(多かれ少なかれ)#4になる可能性があります。
次のようなテストには、追加の利点はありません。
if (typeof obj == 'undefined')
結果は本質的に同じだからです。