我试图将其他参数传递给地图中的回调函数。当我使用es6语法进行回调函数和map时,不会传递该值。
这是es6地图和回调函数
const convertEvents = action.payload.map(item => convertEvent(item), { role: 'teacher' });
const convertEvent = (item) => {
console.log('----------convertEvent role----------');
console.log(this.role);
return item;
};

但是当我使用旧的javascript语法时,传递的值和代码正常工作
const convertEvents = action.payload.map(convertEventRole, { role: 'teacher' });
function convertEventRole(item) {
console.log('----------convertEvent role----------');
console.log(this.role);
return item;
}

你能告诉我为什么es6代码没有用吗?
答案 0 :(得分:2)
传递给Array.map()
的第二个参数是thisArg
,即:
Value to use as this when executing callback.
使用标准JS function
,this
由执行上下文定义,但您可以使用Function.bind()
和其他方法更改它。
箭头函数this
由声明它的上下文定义,因此无法更改。这就是为什么你可以使用带箭头功能的指定thisArg
。
您可以使用partial application和IIFE来近似功能:
const arr = [1, 2, 3];
const result = arr.map(((m) => (n) => n + m)(5));
console.log(result);