js学习笔记 -- 函数

  • js函数有类似javaMethod用法
    Math.max.apply(null, [3, 5, 4]); // 5
    Math.max.call(null, 3, 5, 4); // 5

     

  • Array map,reduce,filter,sort
    var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
    var results = arr.map(pow); // [1, 4, 9, 16, 25, 36, 49, 64, 81]
    console.log(results);
    [x1, x2, x3, x4].reduce(f) = f(f(f(x1, x2), x3), x4)
    var arr = [1, 3, 5, 7, 9];
    arr.reduce(function (x, y) {
        return x + y;
    }); // 25
    var arr = [1, 2, 4, 5, 6, 9, 10, 15];
    var r = arr.filter(function (x) {
        return x % 2 !== 0;
    });
    r; // [1, 5, 9, 15]
    var arr = [10, 20, 1, 2];
    arr.sort(function (x, y) {
        if (x < y) {
            return 1;
        }
        if (x > y) {
            return -1;
        }
        return 0;
    }); // [20, 10, 2, 1] 
    sort默认字符创排序,数字排序需要重写sort 方法

     

  • 闭包: 闭包是由函数以及创建该函数的词法环境组合而成。这个环境包含了这个闭包创建时所能访问的所有局部变量。也就是说返回的函数中存有局部变量。
    function makeAdder(x) {
      return function(y) {
        return x + y;
      };
    }
    
    var add5 = makeAdder(5);
    var add10 = makeAdder(10);
    
    console.log(add5(2));  // 7
    console.log(add10(2)); // 12

    //嵌套的函数可以访问在其外部声明的变量。

    也可以借助闭包,同样可以封装一个私有变量。

        function inc(init) {
            let x = init;
            return {
                inc: function () {
                    x += 1;
                    return x;
                }
            }
        }
        let inc5 = inc(5)
        console.log(inc5.inc())//6
        let inc10 = inc(10)
        console.log(inc10.inc())//11

     

  • 箭头函数内部的this是词法作用域,由上下文确定。箭头函数完全修复了this的指向,这里this指向外部调用对象person。

        let person = {
            name : 'lby',
            getname : function () {
                let name = () => this.name;
                return name()
            }
        }
        console.log(person.getname())

     

     

posted @ 2018-10-05 05:41  扶不起的刘阿斗  阅读(163)  评论(0编辑  收藏  举报