時には私はこのようなjavascriptのコードを参照してください:||を使用したjavascriptのInitオブジェクトオペレーター
var myObj = myObj || {};
だから、実際にここで何が起こるのですか?私は仮定する||演算子はtrueまたはfalseを返しますが、正しくありません。
時には私はこのようなjavascriptのコードを参照してください:||を使用したjavascriptのInitオブジェクトオペレーター
var myObj = myObj || {};
だから、実際にここで何が起こるのですか?私は仮定する||演算子はtrueまたはfalseを返しますが、正しくありません。
演算子は、真であると評価された場合は左の被演算子を返し、そうでない場合は右の被演算子を評価して返します。つまり、a || b
はa ? a : b
に相当しますが、a
は1回のみ評価されます。
myObjがすでに定義されていない限り、myObjが初期化されます。
||短絡オペレータです。最初のオペランドがtrueと評価された場合、2番目のオペランドは評価されません。
したがってJS a || b
はmyObj
が未定義またはnullの場合、それはそれならば、新しい空のオブジェクトを作成します||
の右側の式
のでmyObj
はどちらかであるこのmyobj評価C#a ?? b
のようなものですこのmyobjは、私はあなたは私が何を意味するか理解してほしい
nullの場合はnullまたは空のオブジェクトではありません
また、 'myObj'の値がfalseまたは0またはNaNまたは空文字列の場合、変数に新しいオブジェクトが割り当てられます。 **ただ**未定義またはnullではありません。 JavaScriptには6つの偽のものがあります。 –
@Ray Toal:追加ありがとう – Fender
またはOP(||)意志最初の空でない/偽のパラメータを返します。指定されたこのmyobjが偽またはnullである場合、それは空のオブジェクトに設定された場合に
({}括弧は、オブジェクトを作成するために使用される)
あなたがあるオブジェクトを取得するために、この構築物を使用することができnull
、undefined
などではありません。後でmyObj
をコードとして使用する場合に使用します。なんらかの理由でmyObj
がこの行より前に定義されていない場合、再割り当てするとundefined
またはnull
のままになります。その場合は{}
となります。
あなたはと考えることができます理解するために
// If the object is already defined
if (myObj)
var myObj = myObj;
// It was undefined or null, so assign an empty object to it.
else
var myObj = {};
||最初にかなり基本的な例を見てみましょう。次のように論理OR演算子が定義された変数のデフォルト値を提供するために使用されてもよい。この場合
var bar = false,
foobar = 5,
foo = bar || foobar; // foo = 5
バーがfalsyとみなされる場合、FOOは、foobarに値が割り当てられます。偽の値は、0、偽、未定義、ヌル、NaNまたは空(例えば、「」)とみなすことができる。
+1はJavaScriptで* null併合演算子とも呼ばれますhttp://stackoverflow.com/questions/476436/null-coalescing-operator-for-javascript/476445#476445 – naveen
いいえ、それは* C#のヌル合体演算子( '?')の置換*。 :)私は ''ヌル合体演算子(null coalescing operator)と呼ばれる '||'を聞いたことがありませんでした。それは常に「論理的な」または「演算子」でした。 – cdhowie
が合意しました。 OPの以前の質問から、彼はASP.NETの背景にあり、この明確化の理由です。 – naveen