js函数式理解,纯函数的好处和副作用,柯里化初探

108 阅读1分钟

函数式编程

  1. 调用灵活,使用方便
  2. 代码简洁**
const once = function (fn){
    let done = false
    return function(){
	if(!done){
            fn.apply(this, arguments)
     	}
    }
}

纯函数式编程好处

  1. 只运算,不记录状态
    let arr = [1, 3, 3, 4, 5]
    arr.slice(0, 3)
    arr.slice(0, 3)
    arr.slice(0, 3)
    arr.splice(0, 2)
    arr.splice(0, 2)
    arr.splice(0, 2)

闭包

  1. 延长作用域链
  2. 扩大内部函数的作用域范围
  3. 因为闭包调用,导致调用栈结束时,外部函数被回收,但是被内部调用的变量没有回收
const saveVar = function(){
	let min = 18
    return function(age){
    	return age > min
    }
}

柯里化

  1. 多元函数使用一元方式调用
  2. 传递部分参数,返回一个可以传递剩余参数的函数
const curry = function(fn){
    return function CurriedFn(...args){
        console.log('fn.length', fn.length)
        if(fn.length > args.length){
            return function(){
                console.log(...args)
                return CurriedFn(...args.concat(Array.from(arguments)))
            }
        }
        return fn(...args)
    }
}

主题列表:juejin, github, smartblue, cyanosis, channing-cyan, fancy, hydrogen, condensed-night-purple, greenwillow, v-green, vue-pro, healer-readable, mk-cute, jzman, geek-black, awesome-green, qklhk-chocolate

贡献主题:github.com/xitu/juejin…

theme: juejin highlight: