1

重複の可能性:
Javascript の && 演算子

ExtJS Web デスクトップ デモのサンプル コードには、次の呼び出しがあります。

this.setActiveButton(activeWindow && activeWindow.taskButton);

メソッドへ:

setActiveButton: function(btn) {
    if (btn) {
        btn.toggle(true);
    } else {
        this.items.each(function (item) {
            if (item.isButton) {
                item.toggle(false);
            }
        });
    }
}

&&関数呼び出しの目的は何ですか?

4

2 に答える 2

3

変数「activeWindow」によって参照されるオブジェクトのプロパティを見つけようとする前に、変数が実際に何かを参照していることを確認するためです。そうである場合null(または他のいくつかのこと。コードはそれがオブジェクト参照または であることを認識していると仮定しますnull)、それは例外を引き起こします。このようにして、関数はボタン参照 (それが何であれ) または のいずれかで渡されますnull

別の言い方をすると、次のようになります。

this.setActiveButton(activeWindow != null ? activeWindow.taskButton : null)

JavaScriptの&&演算子は&&、C や Java などの他の言語の と比べて特別です。JavaScript では、左側が最初に評価されます。その値が「偽」( nullundefinedfalse、ゼロ、または空の文字列) の場合、それが式の値です。それ以外の場合、式の値は右辺の値です。

于 2012-07-02T16:28:04.587 に答える
1

この方法に関する追加情報については、短絡評価を参照してください。

短絡式xSandy(Sandを使用して短絡の種類を表す)は、xの場合は条件式、それ以外の場合はfalseの条件式と同等です。式xSoryは、if x then trueelseyと同等です。

于 2012-07-02T16:29:16.990 に答える