当然也可以使用惰性函数来处理,本例最后一个方案会介绍
我们看下面的这个例子,在 DOM 中添加事件时需要兼容现代浏览器和 IE 浏览器(IE < 9),方法就是对浏览器环境进行判断,看浏览器是否支持,...fn.apply(this, args) // 满足要求,执行 fn 函数,传入新函数的参数
: currying(fn.bind(this, ...args), length - args.length...并不是
函数的 length 属性获取的是形参的个数,但是形参的数量不包括剩余参数个数,而且仅包括第一个具有默认值之前的参数个数,看下面的例子
((a, b, c) => {}).length; //..., undefined]
fn()(2)(3) // Uncaught TypeError: fn(...) is not a function
我们期望函数 fn 输出 1, 2, 3,但是实际上调用柯里化函数时...((a = 1, b, c) => {}).length === 0
所以调用 fn() 时就已经执行并输出了 1, undefined, undefined,而不是理想中的返回闭包函数
所以后续调用