1

新しい値が定義されていない場合、これは変数を更新して元の値を保持する正当な方法ですか?

variable = NEWVAR || variable;

私はフィドルを作成しましたが、これまでのところ問題ないように見えますが、厄介な驚きは望んでいません。

テストケースは次のとおりです。

var test = "hello";

test = undefined || test;

alert('"' + test + '"');
4

2 に答える 2

1

はいといいえ。技術的には機能しますが、、、、、またはその他の偽の値の場合は割り当てられないためNEWVAR、偽の値に注意する必要があります。これを行うためのより賢明な方法は、おそらく3次演算子を使用して、定義されているかどうかを確認することです。0false""NEWVAR

variable = (typeof NEWVAR === "undefined") ? variable : NEWVAR;
于 2013-03-12T13:41:53.203 に答える
1

はい、かなり頻繁に使用します。しかし、あなたはそれを心に留めておく必要があります

Douglas Crockford: Javascript の良い部分 (p. 40)

|| 演算子は、最初のオペランドが真の場合、最初のオペランドの値を生成します。それ以外の場合は、2 番目のオペランドの値が生成されます。

したがって、NEWVAR偽の ( falsenullundefinedNaN、 ) 値が含まれている場合0""2 番目のオペランドが評価されます。

これを認識している限り、いつでも||演算子を使用してデフォルト値を取得できます

Douglas Crockford: Javascript の良い部分 (p. 51)

|| 演算子を使用してデフォルト値を入力できます。

var middle = stooge["middle-name"] || "(none)";
var status = flight.status || "unknown";
于 2013-03-12T14:07:29.327 に答える