新しい値が定義されていない場合、これは変数を更新して元の値を保持する正当な方法ですか?
variable = NEWVAR || variable;
私はフィドルを作成しましたが、これまでのところ問題ないように見えますが、厄介な驚きは望んでいません。
テストケースは次のとおりです。
var test = "hello";
test = undefined || test;
alert('"' + test + '"');
新しい値が定義されていない場合、これは変数を更新して元の値を保持する正当な方法ですか?
variable = NEWVAR || variable;
私はフィドルを作成しましたが、これまでのところ問題ないように見えますが、厄介な驚きは望んでいません。
テストケースは次のとおりです。
var test = "hello";
test = undefined || test;
alert('"' + test + '"');
はいといいえ。技術的には機能しますが、、、、、またはその他の偽の値の場合は割り当てられないためNEWVAR
、偽の値に注意する必要があります。これを行うためのより賢明な方法は、おそらく3次演算子を使用して、定義されているかどうかを確認することです。0
false
""
NEWVAR
variable = (typeof NEWVAR === "undefined") ? variable : NEWVAR;
はい、かなり頻繁に使用します。しかし、あなたはそれを心に留めておく必要があります
Douglas Crockford: Javascript の良い部分 (p. 40)
|| 演算子は、最初のオペランドが真の場合、最初のオペランドの値を生成します。それ以外の場合は、2 番目のオペランドの値が生成されます。
したがって、NEWVAR
偽の ( false
、null
、undefined
、NaN
、 ) 値が含まれている場合0
、""
2 番目のオペランドが評価されます。
これを認識している限り、いつでも||
演算子を使用してデフォルト値を取得できます
Douglas Crockford: Javascript の良い部分 (p. 51)
|| 演算子を使用してデフォルト値を入力できます。
var middle = stooge["middle-name"] || "(none)";
var status = flight.status || "unknown";