JS函数学习总结

函数定义方法

//函数定义方法:函数声明定义
function add(a, b) {return a + b;}

//函数定义方法:函数表达式定义
var add = function (a, b) {return a * b};

//函数定义方法:箭头函数定义    (IE11 或更早的版本不支持箭头函数。)
const x = (x, y) => x * y;

自调用函数

//函数类型:自调用函数

格式:(函数对象)(函数参数)


//无参数
(function () {
    var a = 1; 
    var b = 2; 
    return a + b
    }
)();


//有参数
(function (a,b) {
    return a + b
    }
)(1,2);

函数参数传递

  • JS函数定义不会为参数规定数据类型  (函数定义参数是动态)
  • JS函数不会对传递的参数进行类型检查  (函数传入参数是动态)
  • JS函数不会检查所接收参数的数量  (函数传入参数数量不固定)
//不会检查所接收参数的数量


//传递少于函数定义参数情况,未传入的参数默认为undefined

function add(x, y) {
    //x == 1
    //y == undefined

    if (y === undefined) {
          y = 2;
    } 
    //y = 2
}

add(1)


//传递多于函数定义参数情况,可以使用arguments对象获取

function add(x, y) {
    //x == 1
    //y == 2
    //arguments[2] == 3 

    if (y === undefined) {
          y = 1;
    } 

    if (arguments[2] === 3) {
          var z = 1;
    } 
    

    //y == 2
    //z == 1
}

add(1,2,3)

函数的调用方法

//函数名调用
function add(a, b) {
    return a * b;
}
add(1, 2);       

var add = function (a, b) {return a * b};
add(1, 2);   



//通过全局对象window调用
function add(a, b) {
    return a * b;
}
window.add(1, 2);   



//作为对象方法调用

var math = {
    var a = 1;
    var b = 2;

    add:function(){
    return a + b;
    }
}
math.add();// 等于3

var math = {
    add:function(a,b){
    return a + b;
    }
}
math.add(1,2);// 等于3
//对象call或apply方法传入对象调用函数

var math = {
    var a = 0;
    var b = 1;

    add: function() {
        return this.a + this.b;
    }

    max:function(a,b){
        return 
    }

    min:function(a,b){
        return 
    }
}

var mathSubI = {
    var a = 1;
    var b = 2;

    add: function() {
        return this.a + this.b;
    }

    max:function(a,b){
        if ( a > b ){
            return a;
        }
        else {
            return b;
        }
    }
}

var mathSubII = {
    var a = 2;
    var b = 3;

    add: function() {
        return a + b;
    }

    min:function(a,b){
        if ( a < b ){
            return a;
        }
        else {
            return b;
        }
    }
}

//Call方法(多态实现)

math.add.call(mathI);  // 将返回3
math.add.call(mathII);  // 将返回5

math.max.call(mathI,1,2);  // 将返回2
math.min.call(mathII,1,2);  // 将返回1



//Apply方法(多态实现)

math.add.apply(mathI);  // 将返回3
math.add.apply(mathII);  // 将返回5

math.max.apply(mathI,[1,2]);  // 将返回2
math.min.apply(mathII,[1,2]);  // 将返回1


/*
call() 和 apply() 之间的区别

不同之处是:

call() 方法分别接受参数。

apply() 方法接受数组形式的参数。

如果要使用数组而不是参数列表,则 apply() 方法非常方便。
*/

闭包

闭包写法: 

var math= (
    function () {

        var name = 'Bill';
        var age = 22;
        var tel = '123456789'
        
        function call(){
            return counter += 1;
        }

        return call()
    }
)();
发布了23 篇原创文章 · 获赞 0 · 访问量 1996

猜你喜欢

转载自blog.csdn.net/qq_33913982/article/details/104375863