目前我正在研究React和Redux。我找到了一个样板文件,我正在查看所有示例代码。我的问题是我不完全理解这个ES6语法的含义。
到目前为止我学到的是hello = () => "Hello";
等同于:
hello = function hello() {
return "Hello";
};
然后将上述内容更改为hello = name => "Hello " + name;
会将其转换为:
hello = function hello(name) {
return "Hello " + name;
};
这一切都非常有意义,基本上它只是缩短了它,因此你不必编写函数及其返回语句。然而,我遇到了一些我不能说清楚的语法。它如下:
const mapActionCreators = {
increment: () => increment(1),
doubleAsync
}
以上代码转换为:
var mapActionCreators = {
increment: function (_increment) {
function increment() {
return _increment.apply(this, arguments);
}
increment.toString = function () {
return _increment.toString();
};
return increment;
}(function () {
return increment(1);
}),
doubleAsync: doubleAsync
};
我知道在这种情况下() => increment(1)
正在转入:
(function () {
return increment(1);
}),
总的来说,我想我的问题是, increment:
如何转换为:
increment: function (_increment) {
function increment() {
return _increment.apply(this, arguments);
}
increment.toString = function () {
return _increment.toString();
};
return increment;
}
代码的含义是什么?
答案 0 :(得分:6)
箭头函数从创建它们的范围中捕获this
的值。
apply
可让您调用函数并明确其中this
的值。
其余代码只是将正确的this
提供给函数。
(如果您尝试对生成的函数进行字符串化,toString
确保 right 函数被字符串化。