【发布时间】:2014-10-03 07:18:36
【问题描述】:
我一直在使用新的 ECMAScript 6 功能,这个问题与箭头函数有关。以下代码是分配给Function 对象原型的简单功能组合方法。使用简单的匿名函数时效果很好,但使用箭头函数时效果不佳。
Function.prototype.compose = function (bar) {
var foo = this;
return function () {
return foo(bar.apply(null, arguments));
};
};
var addFive = function (baz) {
return baz + 5;
};
var addTen = function (hello) {
return hello + 10;
};
var addFifteen = addFive.compose(addTen);
console.log(addFifteen(10));
Function.prototype.compose = function (bar) {
var foo = this;
return () => foo(bar.apply(null, arguments));
};
var addFive = function (baz) {
return baz + 5;
};
var addTen = function (hello) {
return hello + 10;
};
var addFifteen = addFive.compose(addTen);
console.log(addFifteen(10));
http://www.es6fiddle.com/hyo32b2p/
第一个记录 25 正确到控制台,而第二个记录函数 (hello) { return hello + 10; }105 并不能准确地告诉我我做错了什么。
我没有在箭头函数中返回值,因为它应该隐式返回最后一个语句(在本例中是第一个和最后一个),我认为手头的问题与词法范围和这个值,也许。谁能解释一下?
【问题讨论】:
标签: javascript ecmascript-harmony arrow-functions