js 纯函数

js 纯函数
纯函数特点:
1、函数f,对于输入x产生一个输出y=f(x)。
2、纯函数,输入x经过function处理之后输出y 在执行的过程中不会影响到外界的值。
3、纯函数的定义:对于相同的输入 永远会的到相同的输出,而且没有任何的副作用,也不依赖外部环境的状态。
4、纯函数指不依赖,不修改自己作用域以外的值。

举个栗子

<script>
            var num = 18;
            function compare(x) {
                return x > num;
            }
            compare(10);//不是一个纯函数
    </script>

上述例子就不是一个纯函数,因为该函数要依赖全局作用域下的变量。
优化:变为纯函数

<script>
        var num = 18;
        function compare(x, y) {
            return x > y;
        }
        compare(10, num);
    </script>

再举个栗子

  <script>
         var arr = [];
        function add(_arr){
            var a = 123;
            _arr.push(a);
            return _arr;
        }
        add(arr);
        console.log(arr);//[123]   不是一个纯函数
    </script>

上述例子就不是一个纯函数,因为该函数改变了原数组。
优化:

  <script>
        var arr = [];
        function add(_arr){
            var newArr = [];
            var a = 123;
            for(var i = 0;i<_arr.length;i++){
                newArr.push(_arr[i]);
            }
            newArr.push(a);
            return newArr;
        }
        var newArr = add(arr);
        console.log(newArr); // [123]
        console.log(arr); // []
    </script>

纯函数优点:
1.js非常容易创建全局变量,在所有的函数中都可以被访问到
2.纯函数非常容易做单元测试,不需要考虑到上下文环境,只需要考虑输入和输出
3.纯函数不那么复杂,更容易调试,易于组合,易于并行化。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值