3

このJavaScriptステートメントで正確に何が起こっているのですか:

var loadPrevious = (loadPrevious || function() {});

私の理解では、変数 loadPrevious は匿名関数または値 loadPrevious のいずれかになります

編集:

回答とコメントに感謝します。しかし、なぜ次のような声明が出てくるのでしょうか。

var app;
loadPrevious(app = launchApplication($("#target"),0));

loadPrevious はここで何をしますか? そして、なぜこのようにするのですか?

4

4 に答える 4

6

loadPrevious にすでに値が割り当てられているかどうかを確認します。そうでない場合は、空の関数を割り当てます。

この構文は、C++ または C# の三項構文に相当する JavaScript です。

var loadPrevious = loadPrevious != null ? loadPrevious : () => {}; 

たとえば、C# で。

于 2012-10-11T22:39:23.773 に答える
3

コードは が定義されているかどうかをチェックしloadPreviousており、定義されていない場合は無名関数として定義しています。

このパターンは、いくつかの異なる場所からオブジェクトにメソッドを追加する場合に役立ちます。たとえば:

method1.js:

var loadPrevious = (loadPrevious || function() {});
loadPrevious.prototype.method1 = function() { return 'method1'; };

method2.js:

var loadPrevious = (loadPrevious || function() {});
loadPrevious.prototype.method2 = function() { return 'method2'; };

これらのファイルの両方を含めることができ、loadPrevious には両方のメソッドがあります。

<script src="method1.js"></script>
<script src="method2.js"></script>
<script>
    var oLoadPrevious = new loadPrevious();
    oLoadPrevious.method1(); // "method1"
    oLoadPrevious.method2(); // "method2"
</script>
于 2012-10-11T22:46:06.697 に答える
1

正解です。false と評価されない限り、の値になります。loadPreviousその場合、空の anon 関数になります。

于 2012-10-11T22:39:52.817 に答える
1

これはOR ||です。状態右

var loadPrevious = loadPrevious || function() {}

loadPrevious が true の場合、次の条件をスキップします。

function(){}したがって、定義されていない場合にのみ割り当てられます..

于 2012-10-11T22:41:20.417 に答える