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)
会执行吗?有人可以帮我解释一下吗?
答案 0 :(得分:1)
如果您为'context'传递了一个假值,(context || null)
将导致null。 JS会将null作为第一个参数传递给callback.call()
。第一个参数是回调函数的this
。
答案 1 :(得分:1)
它实际上不应该存在。 undefined
和null
作为this
参数传递给Function.prototype.call
时具有相同的效果(函数的this
参数设置为undefined
)。