ES6新特征

filter:

它用于把Array的某些元素过滤掉,然后返回剩下的元素

filter()把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素

var arr = [1, 2, 4, 5, 6, 9, 10, 15];
var r = arr.filter(function (x) {
    return x % 2 !== 0;
});
console.log("+++++++++++++",arr);  1, 2, 4, 5, 6, 9, 10, 15  不会改变原数组
console.log("+++++++++++++",r); 1 5 9 15

闭包 

<script>
    //    reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。对空数组是不会执行回调函数的。
    var arr = [1, 2, 3, 4, 5];
    //    function sum(arr) {
    //        var sum;
    //        sum=arr.reduce(function (p1, p2) {
    //            return p1+p2;
    //        })
    //    }


    //        这个例子中,我们在函数lazy_sum中又定义了函数sum,并且,内部函数sum可以引用外部函数lazy_sum的参数和局部变量,
    //        当lazy_sum返回函数sum时,相关参数和变量都保存在返回的函数中,这种称为“闭包(Closure)”的程序结构拥有极大的威力。
    //        注意到返回的函数在其定义内部引用了局部变量arr,所以,当一个函数返回了一个函数后,其内部的局部变量还被新函数引用,所以,闭包用起来简单,实现起来可不容易。
    //        另一个需要注意的问题是,返回的函数并没有立刻执行,而是直到调用了f()才执行。
    function lazy_sum(ar) {
        var sum = function () {
            return ar.reduce(function (p1, p2) {
                return p1 + p2;
            })
        }
        return sum;
    }

    //    当我们调用lazy_sum()时,返回的并不是求和结果,而是求和函数
    var f = lazy_sum(arr); //f=sum 因为return sum
    console.log("+++++++++", f);
    //    调用函数f时,才真正计算求和的结果:
    f();
    console.log("+++++++++++++", f())

</script>

箭头函数

 箭头函数和匿名函数有个明显的区别:箭头函数内部的this是词法作用域,由上下文确

var arr=[1,2,3];
arr.map((t)=> {
    console.log("++++++++",t)
});

猜你喜欢

转载自blog.csdn.net/qq_38643776/article/details/84024973