我是 JavaScript 新手。我面临以下问题。
就像声明的那样here,几乎所有 ES5 数组函数(forEach、map、filter、every、some)都可以接受额外的第二个参数。
如果指定了该函数,则将其视为第二个参数的方法来调用。也就是说,您传递的第二个参数将成为this您传递的函数内部的关键字。
array.forEach(function(currentValue, index, arr), thisValue)
array.map(function(currentValue, index, arr), thisValue)
相反:
array.reduce(callback, [initialValue])
array.reduceRight(callback, [initialValue])
请注意,reduce() 和 reduceRight() 都不接受可选参数来指定要调用归约函数的 this 值。请参阅函数.bind()方法(如果您需要调用归约函数)作为特定对象的方法。
“作为特定对象的方法被调用”是什么意思?谁能提供一些示例,它可能如何影响我的代码?
提前致谢。
这很简单。在回调函数中,this
value 将是传递给数组方法的第二个参数。如果你不会使用this
,那么这个参数是无关紧要的,你不需要传递它。
"use strict";
[0].forEach(function(currentValue, index, arr) {
console.log(this); // 1234
}, 1234);
请注意,在草率模式下,this
值被转换为对象。因此,如果您省略参数或使用undefined
,您将得到全局对象。
如果您需要类似的东西reduce
,然后使用bind
:
"use strict";
[0, 1].reduce(function(prevValue, currValue, index, arr) {
console.log(this); // 1234
}.bind(1234));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)