在javascript地图es6

时间:2018-05-07 22:08:55

标签: javascript dictionary ecmascript-6

我试图将其他参数传递给地图中的回调函数。当我使用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代码没有用吗?

1 个答案:

答案 0 :(得分:2)

传递给Array.map()的第二个参数是thisArg,即:

Value to use as this when executing callback.

使用标准JS functionthis由执行上下文定义,但您可以使用Function.bind()和其他方法更改它。

箭头函数this由声明它的上下文定义,因此无法更改。这就是为什么你可以使用带箭头功能的指定thisArg

您可以使用partial applicationIIFE来近似功能:

const arr = [1, 2, 3];

const result = arr.map(((m) => (n) => n + m)(5));

console.log(result);