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