1

次のことを行うと、どのような違いがありますか。

function (callback) {
    var callback  = callback || false;
    combineCallback = function () {
        callback.apply(window);
        ....
    }
    getJSON(combineCallback);
}

またはこれで:

function (callback) {
    var combineCallback = function () {
        callback.apply(window);
        ....
    }
    getJSON(combineCallback);
}

write write に違いはありますvar callback = callback || false;か?

4

1 に答える 1

1

var同じスコープ内のローカル変数を「シャドウ」しません。同様に、パラメーター (ローカル変数/バインディング自体) を「シャドウ」しvarません。簡単に言えば、関数が呼び出されるたびに、渡された最初の引数を最初に含む異なるローカル変数callbackを表します。と呼ばれるローカル変数は1 つだけです。callback

var は新しい変数を「作成」しないため (「巻き上げ」を検索)、

function (callback) {
    var callback  = callback || false;

function (callback) {
    callback  = callback || false;

同等です - 違いはありません。(私は後者の方がより明確だと思いますが。)

ただし、変更を削除するcallback = callback || false とセマンティクスが変更されます。特に、コールバックは、その行がないと 0 のような false-y 値になる可能性があります。ここでこれが必要/有用であるかどうかは別の問題であり、(false).apply(..)それでもエラーが発生します。

の簡単な TTL を次に示しますx || y

x        y    x || y
-------  ---  ------
TRUTH-y  ANY  x
FALSE-y  ANY  y
于 2013-05-31T06:22:33.170 に答える