简单的函数柯里化

			function add(a, b, c, d) {
				console.log(a, b, c, d)
				console.log(a + b + c + d)
			}

			function createCurry(fn) {
				const args = [].slice.apply(arguments).slice(1)
				const argsLen = fn.length

				return function() {
					const _args = args.concat([].slice.apply(arguments))

					if (_args.length < argsLen) {
						return createCurry(fn, ..._args)
					}

					fn(..._args)
				}
			}

			const add12 = createCurry(add, 1, 2)
			add12(3, 4)

 其实函数柯里化很简单,就是闭包+如何进行参数收集:

  1. 搞清楚要要柯里化的参数需要多少个参数。直接用函数的length属性获取
  2. 在闭包中,使用arguments收集参数
  3. 如果参数凑够了,就执行函数,如果没凑够,就接着收集

 

 

你可能感兴趣的:(JavaScript,柯里化)