Giter VIP home page Giter VIP logo

Comments (27)

mqyqingfeng avatar mqyqingfeng commented on May 2, 2024 45

@evanzlj 我现在维护三个平台就已经有点忙不过来啦,公众号就更麻烦了,而且我觉得还是 PC 端更适合学习一些,可以边看文章边动手试验代码。

from blog.

kashtian avatar kashtian commented on May 2, 2024 6

大佬,这个偏函数是不是有点问题,subFrom20(5),subFrom20(4)都输出15,那个args被污染拉,是不是该拷贝一份

from blog.

HunterCoder avatar HunterCoder commented on May 2, 2024 1

while(position < arguments.length) args.push(arguments[position++])
应该改为:
while(position < arguments.length) args[position]=(arguments[position++]);
@kashtian

from blog.

syzq avatar syzq commented on May 2, 2024

大佬有公众号吗

from blog.

mqyqingfeng avatar mqyqingfeng commented on May 2, 2024

@syzq 没有哎~

from blog.

SilenceZeng avatar SilenceZeng commented on May 2, 2024

第二版 while(position < arguments.length) args.push(argumetns[position++]); 中后一个arguments拼成argumetns了

from blog.

mqyqingfeng avatar mqyqingfeng commented on May 2, 2024

@SilenceZeng 非常感谢指出~ 已修改~ o( ̄▽ ̄)d

from blog.

luobotang avatar luobotang commented on May 2, 2024

总结得很棒!

from blog.

evanzlj avatar evanzlj commented on May 2, 2024

大佬开个公众号吧,这样可以有更大的动力~~ 赏你一杯咖啡,哈哈~~

from blog.

waterVenice7 avatar waterVenice7 commented on May 2, 2024

可不可以这样理解,偏函数的一种特殊情况就是curry

from blog.

WangNianyi2001 avatar WangNianyi2001 commented on May 2, 2024

那这样说来Function.prototype.bind也是偏函数咯

from blog.

wuzhong1030 avatar wuzhong1030 commented on May 2, 2024

var _ = {};
args[i] === _
这样写是有什么奥妙么

from blog.

zhw2590582 avatar zhw2590582 commented on May 2, 2024

es6简化版

function partial(func, ...argsBound) {
  return function(...args) {
    return func.call(this, ...argsBound, ...args);
  };
}

from blog.

lisen6 avatar lisen6 commented on May 2, 2024

大佬,这个偏函数是不是有点问题,subFrom20(5),subFrom20(4)都输出15,那个args被污染拉,是不是该拷贝一份

你写错了吧。没有被污染啊

from blog.

Gloomysunday28 avatar Gloomysunday28 commented on May 2, 2024

占位符用在里面有什么用

from blog.

cyhwinner avatar cyhwinner commented on May 2, 2024
 while(position < arguments.length) args.push(arguments[position++]);

直接换成 下面这样会不会好点

if(position < arguments.length) args = args.concat([].slice.call(arguments, position));

from blog.

wuming-lzd avatar wuming-lzd commented on May 2, 2024

@cyhwinner

 while(position < arguments.length) args.push(arguments[position++]);

直接换成 下面这样会不会好点

if(position < arguments.length) args = args.concat([].slice.call(arguments, position));

不一样吧,原文的意思是:将arguments[position]这个值放入到args中;你改后的意思是:将arguments从position位置截取到数组最后一项的所有值放入到args中;原文放入了一个值,你放入了从position位置到最后一个位置的好几个值

from blog.

xsfxtsxxr avatar xsfxtsxxr commented on May 2, 2024

强烈建议大佬把博客文章整理一下搞个类似阮一峰老师的ES6微信小程序

from blog.

ZiPengLiang avatar ZiPengLiang commented on May 2, 2024

您好,我最近一直在学习您编写的文章,在这一章中我实在分辨不出柯里化和偏函数的区别,还有能说明下这两者的应用场景吗?

from blog.

KeithChou avatar KeithChou commented on May 2, 2024
// 第一版
// 似曾相识的代码
function partial(fn) {
    var args = [].slice.call(arguments, 1);
    return function() {
        var newArgs = args.concat([].slice.call(arguments));
        return fn.apply(this, newArgs);
    };
};

这段就是bind的实现呀 所以可以理解成 Function.prototype.bind函数也是一个偏函数啦

from blog.

anjina avatar anjina commented on May 2, 2024

@cyhwinner

 while(position < arguments.length) args.push(arguments[position++]);

直接换成 下面这样会不会好点

if(position < arguments.length) args = args.concat([].slice.call(arguments, position));

不一样吧,原文的意思是:将arguments[position]这个值放入到args中;你改后的意思是:将arguments从position位置截取到数组最后一项的所有值放入到args中;原文放入了一个值,你放入了从position位置到最后一个位置的好几个值

你可能没有注意到 第二个替换 while 改成了 if

from blog.

fwqaaq avatar fwqaaq commented on May 2, 2024

使用ts写偏函数,不过类型出于考虑,只用了any

function partical(fn: Function, ...args: any[]): Function {
  return function (...moreArgs: any[]) {
    return fn(...args, ...moreArgs)
  }
}

from blog.

yangjunjun avatar yangjunjun commented on May 2, 2024

更加函数式的实现:

const _ = Symbol('_')
const partial = (fn, ...outerArgs) => {
    return function (...innerArgs) {
        return fn.call(this, ...outerArgs.map(arg => arg === _ ? innerArgs.shift() : arg), ...innerArgs)
    }
}
partial._ = _

from blog.

xiaochengzi6 avatar xiaochengzi6 commented on May 2, 2024

函数式的实现:

const _ = Symbol('_')
const partial = (fn, ...outerArgs) => {
    return function (...innerArgs) {
        return fn.call(this, ...outerArgs.map(arg => arg === _ ? innerArgs.shift() : arg), ...innerArgs)
    }
}
partial._ = _

我认为应该这样比较好,占位符可以由编写成员自定义

function partial(fn, holder = partial, ...args) {
  return function (...params) {
    return fn.call(this, ...args.map((arg) => (arg === holder ? (arg = params.shift()) : arg)), ...params)
  }
}~~~
这样看起来就完美了

from blog.

cangSDARM avatar cangSDARM commented on May 2, 2024

“局部应用”翻译也有问题。逻辑上讲应该是 applied partial function, 只是英语语法调整成了partially applied function。正确翻译应该是 “已被传递(applied)部分(partial)(参数)(被省略)的函数”,简称不如为“部分定参函数”

from blog.

Zhen-code avatar Zhen-code commented on May 2, 2024

while(position < arguments.length) args.push(arguments[position++]);
大佬,这个有点看不懂可以解释一下嘛

from blog.

yi-xiaobai avatar yi-xiaobai commented on May 2, 2024

大佬 bind 和 局部应用 晕了 不太明白呢

from blog.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.