gpt4 book ai didi

javascript - 在 javascript map es6 中传递附加参数

转载 作者:行者123 更新时间:2023-12-01 02:04:29 24 4
gpt4 key购买 nike

我正在尝试将附加参数传递给 map 中的回调函数。当我在回调函数和映射中使用 es6 语法时,该值不会传递。

这是es6的map和回调函数

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 代码不起作用吗?

最佳答案

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

Value to use as this when executing callback.

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

箭头函数 this 由声明它的上下文定义,因此无法更改。这就是为什么您可以将分配的 thisArg 与箭头函数一起使用。

您可以使用partial application来近似功能和 IIFE :

const arr = [1, 2, 3];

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

console.log(result);

关于javascript - 在 javascript map es6 中传递附加参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50223157/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com