在这个javascript代码中为null?

时间:2013-08-07 02:23:27

标签: javascript

    Array.prototype.forEach = function(callback, context) {
        for (var i = 0; i < this.length; i++) {
            callback.call(context || null, this[i], i, this);
        }
    };

    ["a", "b", "c"].forEach(function(value, index, array) {
        assert(value,
                "Is in position " + index + " out of " +
                        (array.length - 1));
    });

我不完全理解为什么null在这里使用。我想当我使用调用foreach时,如果我错过context参数,它会将其替换为null吗? callback.call(context || null, this[i], i, this)会执行吗?有人可以帮我解释一下吗?

2 个答案:

答案 0 :(得分:1)

如果您为'context'传递了一个假值,(context || null)将导致null。 JS会将null作为第一个参数传递给callback.call()。第一个参数是回调函数的this

答案 1 :(得分:1)

它实际上不应该存在。 undefinednull作为this参数传递给Function.prototype.call时具有相同的效果(函数的this参数设置为undefined )。