纯函数

作者: c菜鸟 | 来源:发表于2018-03-28 10:23 被阅读0次

    什么是纯函数

    • 返回结果只依赖它的参数
    • 函数执行过程中没有副作用

    什么是返回结果只依赖参数呢

    var a = 1;
    function num(b){ return a+b};

    上面的函数不是纯函数因为它依赖外部变量,所以它不是纯函数

    function num(a, b) {return a + b}

    上面的函数就是纯函数,因为它的返回值只依赖它的参数

    函数执行过程中没有副作用

    const a = 1;
    const foo = (obj, b) => {
    return obj.x + b;
    }
    const counter = {x: 1};
    foo(couter, 2);
    counter.x // 1

    从上面我们可以看出来counter对象中的x属性并没有改变,所以这个函数执行没有产生副作用

    const foo = (obj, b){
    obj.x = 2;
    return obj.x + b;
    }
    const counter = {x: 1};
    foo(counter, 2);
    counter.x //2

    从上面可以看出这个函数在执行的过程中改变了counter中x的属性,所以这个函数不是纯函数

    如果在函数内创建的对象然后改变,这个没有影响外部的变量,所以这样就是纯函数

    相关文章

      网友评论

          本文标题:纯函数

          本文链接:https://www.haomeiwen.com/subject/jjmjcftx.html