0

jQueryでは具体的に

var a= 'something' || function () {

}

また

var a = 'something' || { }

どういう意味ですか?{}はjavascriptのオブジェクトjsonであり、javascriptの無名関数を認識していますが、これが何を意味するのか理解できません。

よろしくお願いします。

4

4 に答える 4

3

おそらく、誤った例が含まれています。コード有効ですが、既知の文字列を変数に割り当てているため、次のORステートメントが役に立たなくなるため、作成するのはかなり役に立ちません。

一般的なの、次のような構文です。

function foo(bar) {
   // set baz to the contents of bar
   // or create an empty object if bar evaluates to false
    var baz = bar || {}; 
}
于 2011-03-30T08:14:22.313 に答える
1

この種の「条件付き割り当て」は、ブール演算子(この場合は「OR」など)の短絡を利用して、左側の式の値を変数に割り当てる場合に、言語で一般的なイディオムです。 「真の」値またはそうでない場合は右辺の式。検討:

var nullOrFive = null || 5; // => 5

左側(null || five)は、「真の」オペランドが見つかるまで、OR演算子に対して各オペランドの左から右へのテストを評価し、それを返します。一方で:

var tenOrWhatever = 10 || someMethodThatIsNeverCalled(); // => 10

したがって、あなたの例では、「何か」がtrue(JavaScriptでは「undefined」、「null」、ゼロ以外)と評価された場合、変数「a」はその値を取得します。それ以外の場合は、関数(function() {...})またはオブジェクトリテラル({})。

于 2011-03-30T08:15:56.383 に答える
1

変数に値を割り当てるとき、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オブジェクトを拡張できます。

于 2011-03-30T08:19:18.910 に答える
0

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が{}に初期化されていることを確認します

于 2011-03-30T08:14:19.660 に答える