3

{}空の意味を理解しようとしています。

var $sb = $sb || {};

これは、変数 $sb の値がそれ自体にコピーされているか、関数リテラルであることを意味しますか?

完全なコンテキスト:

var $sb = $sb || {};
$sb.xxx = function() {
    // code
}
4

5 に答える 5

5

のショートカットです

new Object()

だからこの行

var $sb = $sb || {};

変数$sbが存在するかどうかを確認し、存在しない場合は新しいオブジェクトを作成して$sb変数に割り当てます。

したがって、他の方法では、次のように書くことができます。

if( !$sb ) {
    var $sb = new Object();
}
于 2012-12-17T14:39:01.103 に答える
4

var a = {}オブジェクトリテラル表記と呼ばれます。var a = new Object()スコープの解決が必要ないため (つまり、同じ名前のコンストラクターを定義でき、そのため JavaScript エンジンがそのようなルックアップを行う必要がある)よりも高速です。

パターンは、すでに定義されている場合にvar a = a || {};置き換えを避けるために使用されます。このパターンでは、or-operator:は合体演算子として機能します。isまたはit の場合、ステートメントの右側にある式が実行されます。aa||anullundefined{}

このパターンを使用すると、a常に として定義され、object既に存在する場合は上書きされません。

于 2012-12-17T14:46:58.090 に答える
2

オブジェクトリテラルです。お気に入り:

var obj = { x: 4, y: 2 };

プロパティがないだけです:

var obj = {};

演算子は、偽でない値に評価される場合は最初の||オペランドを返し、それ以外の場合は 2 番目のオペランドを返します。したがって、式は存在する場合$sb || {};は値を返し、$sb存在しない場合は新しい空のオブジェクトを作成します。

于 2012-12-17T14:40:13.730 に答える
1

の略ですnew Object()

于 2012-12-17T14:38:51.783 に答える
1

次の略です。

new Object()

この場合、 this meansは独自の値に設定されるか、 の場合は$sb新しい空のオブジェクトに設定されます。$sbundefined

于 2012-12-17T14:40:58.123 に答える