javascript - es6 还原 es5
PHPz
PHPz 2017-04-11 12:19:21
[JavaScript讨论组]
const compose = f => g => x => f(g(x));

const f = compose (x => x * 4) (x => x + 3);
f(2) // 20

求一个化简后的compose!!!!!!.......还有为什么f(2)等于8
PHPz
PHPz

学习是最好的投资!

全部回复(2)
大家讲道理
"use strict";

var compose = function compose(f) {
  return function (g) {
    return function (x) {
      return f(g(x));
    };
  };
};
var f = compose(function (x) {
  return x * 4;
})(function (x) {
  return x + 3;
});
f(2);

地址

可能给compose的参数换个名字更阅读一些?

var compose = function(a) {
    return function(b) {
        return function(c) {
            return a(b(c));
        };
    };
};
var f = compose(function(x) {
    return x * 4;
})(function(x) {
    return x + 3;
});
console.log(f(2));
调用的话一共有三次
var f = compose(function(x) {
    return x * 4;
})(function(x) {
    return x + 3;
});
两次
f(2)
一次

三次调用再拆为

var f1=compose(function(x) {
    return x * 4;
})
var f2 = f1(function(x) {
    return x + 3;
})
f2(2);
  1. compose(function(x) {return x * 4;})即参数a为函数function(x) {return x * 4;}内部a(b(c))相当于对a调用内部参数xb(c),得到function(b){return function(c){return b(c)*4}}

  2. 此时 f1 = function(b){return function(c){return b(c)*4}}同样对f1的调用f1(function(x) {return x + 3;})相当与参数bfunction(x){return x+3},内部b(c)相当于将c作为参数传入b中,得到function(c){return (c+3)*4}

  3. 此时f2=function(c){return (c+3)*4},f2(2)=20

有点绕,可以拿笔和纸写一下。

高洛峰
var compose= function compose(f){
    return function(g){
        return function (x){
            return f(g(x))
        }
    }
}
var f = compose(function(x){
    return x*4;
})(function(x){
    return x + 3;
});
f(2)//20

就像一楼说滴一样,就是这个东东
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号