gpt4 book ai didi

Javascript 函数 Arguments 对象神奇地变成了当前的 webpack 模块?

转载 作者:行者123 更新时间:2023-11-29 17:53:00 25 4
gpt4 key购买 nike

我正在构建一个带有 Redux 并在 mapDispatchToProps 函数中的 React 应用程序 - 我正在使用下面的模式。

const mapDispatchToProps = (dispatch) => {
debugger
Object.keys(actions).forEach(key => {
var functionObj = actions[key];
actions[key] = () => {
debugger
var zz = Array.prototype.slice.call(arguments);
dispatch(functionObj.apply(null,zz));
}
});

return actions;
}

让我抓狂的是参数对象是我所期望的(带有参数 bla bla 的类似对象的数组),除非我以任何方式“使用”它。 “使用”是指:

将其分配给某些东西(如上面的 var zz)或将其传递给函数。当我“使用”arguments 对象时——它神奇地变成了我当前所在的当前 Webpack 模块。

有人知道吗?我疯了吗??

最佳答案

这是由于箭头函数 do not provide an arguments object 引起的。 .所以你引用的是 module wrapper function , 这是最近的非箭头函数。

您可以使用 rest parameters 修复此问题反而。骑得好!其余参数是一个真正的数组,不需要用任何 Array#slice() 进行转换废话。

下面是一个示例,其中我还使用了 spread operator避免需要使用 Function#apply() ,因为您似乎不需要任何特殊的 this 值。

const mapDispatchToProps = (dispatch) => {
debugger
Object.keys(actions).forEach(key => {
var functionObj = actions[key];
actions[key] = (...zz) => {
debugger
dispatch(functionObj(...zz));
}
});

return actions;
}

关于Javascript 函数 Arguments 对象神奇地变成了当前的 webpack 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41623574/

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