jQueryでは具体的に
var a= 'something' || function () {
}
また
var a = 'something' || { }
どういう意味ですか?{}はjavascriptのオブジェクトjsonであり、javascriptの無名関数を認識していますが、これが何を意味するのか理解できません。
よろしくお願いします。
jQueryでは具体的に
var a= 'something' || function () {
}
また
var a = 'something' || { }
どういう意味ですか?{}はjavascriptのオブジェクトjsonであり、javascriptの無名関数を認識していますが、これが何を意味するのか理解できません。
よろしくお願いします。
おそらく、誤った例が含まれています。コードは有効ですが、既知の文字列を変数に割り当てているため、次のOR
ステートメントが役に立たなくなるため、作成するのはかなり役に立ちません。
一般的なのは、次のような構文です。
function foo(bar) {
// set baz to the contents of bar
// or create an empty object if bar evaluates to false
var baz = bar || {};
}
この種の「条件付き割り当て」は、ブール演算子(この場合は「OR」など)の短絡を利用して、左側の式の値を変数に割り当てる場合に、言語で一般的なイディオムです。 「真の」値またはそうでない場合は右辺の式。検討:
var nullOrFive = null || 5; // => 5
左側(null || five
)は、「真の」オペランドが見つかるまで、OR演算子に対して各オペランドの左から右へのテストを評価し、それを返します。一方で:
var tenOrWhatever = 10 || someMethodThatIsNeverCalled(); // => 10
したがって、あなたの例では、「何か」がtrue(JavaScriptでは「undefined」、「null」、ゼロ以外)と評価された場合、変数「a」はその値を取得します。それ以外の場合は、関数(function() {...}
)またはオブジェクトリテラル({}
)。
変数に値を割り当てるとき、JavaScriptは指定された式を評価しています。
var s= s || {};
これは、現在のスコープにsという名前の変数がすでに存在する場合、新しく作成されたs変数がその変数を指していることを意味します。それ以外の場合、s変数が現在のスコープで定義されていないか、null参照を指しているか、またはFALSEと評価された他の値を指している場合、新しく作成されたs変数は新しいオブジェクトを指します。これは、1つのオブジェクトを複数のファイルで拡張する場合に役立ちます。
File1
var globalNamespace = globalNamespace || {};
globalNamespace.someVariable = "some value;"
File2
var globalNamespace = globalNamespace || {};
globalNamespace.someFunction = function()
{
return this.someVariable;
};
このようにして、コードが複数のファイルに吐き出されることを心配することなく、globalNamespaceオブジェクトを拡張できます。
MDCのドキュメントを引用して、
Logical OR (||)
expr1 || expr2
Returns expr1 if it can be converted to true; otherwise, returns expr2.
Thus, when used with Boolean values, || returns true if either operand is true;
if both are false, returns false.
さらに、短絡評価があります。論理式は左から右に評価されるため、次のルールを使用して、可能な「短絡」評価についてテストされます。
したがって、expr1がtrueと評価できる場合、expr2は評価されません。
jQueryは、これらの短絡評価の多くを使用して、変数のデフォルト値を定義します。例えば。varo=オプション|| {}; オプションを変数oに入れます; ただし、オプションが未定義またはnullの場合、oが{}に初期化されていることを確認します