私は 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
はコンソールに正しくログを記録しますが、2番目のものは関数(hello) { return hello + 10; }105
をログに記録しますが、何が間違っているのか正確にはわかりません。
アロー関数は最後のステートメント (この例では最初と最後) を暗黙的に返すことになっているため、アロー関数内で値を返しません。手元の問題は字句スコープと this の値に関係があると思います。 、 多分。誰でも説明できますか?