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 有什么区别var callback = callback || false;吗?

4

1 回答 1

1

var不会“隐藏”同一范围内的局部变量。同样,var不会“隐藏”参数(这是一个局部变量/绑定本身)。简单地说,每次调用函数时,callback代表一个不同的局部变量,该变量最初包含传递的第一个参数;并且只有一个名为 的局部变量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 回答