纯函数

87 阅读1分钟

非原创

纯函数要满足以下三点:

  • 相同输入总是会返回相同的输出。
  • 不产生副作用。
  • 不依赖于外部状态。

例1

那么根据第一点,这个是纯函数吗?

        var a = 10
        function f(b){
            return a+b
        }
        console.log(f(5));

答案是否定的,因为当全局的 a = 10 时,输出是 15,当全局的 a = 0 时,输出是 5。不满足第一条还有第三条规定。

例2

        obj={}
        function f(b){
            obj.a = 10
            return b
        }
        console.log(f(5));

这个是纯函数吗?答案也是否定的,因为函数改变了全局作用域里面的 obj。不满足第二条规定。