深刻理解ES6读书笔记3:函数


参数默认值数组

未提供参数,或将参数值指定为undefined时,默认值会被使用。app

function add(a, b = 2, c = 3){
    let result = a + b + c;
    console.log(result);
}
add(1); //6add(1,2); //6add(1,undefined,4); //7add(1,null,4);

参数默认值表达式ide

参数默认值除了是基本类型的值,也能够执行一个函数来产生默认值。函数

function getValue(){return 5;
}//未提供第二个参数时,getValue()才会被调用     function add(a, b = getValue()){return a + b ;    
}
console.log(add(1,1)); //2console.log(add(1)); //6

getValue()函数也能够返回可变的值。get

let value = 5;function getValue(){return value++;
}     
function add(a, b = getValue()){return a + b ;    
}
console.log(add(1,1)); //2console.log(add(1)); //6console.log(add(1)); //7

能够将前面的参数做为后面参数的默认值(反之,后面参数做为前面参数的默认值不行)it

function add(a, b = a){return a + b ;    
}
console.log(add(1,1)); //2console.log(add(1)); //2

也能够将前面的参数a做为参数传递给一个函数来产生参数b的值。io

function getValue(value){return value + 5;
}function add(a, b = getValue(a)){return a + b ;    
}
console.log(add(1,1)); //2console.log(add(1)); //7

剩余参数console

剩余参数由三个点(...)与一个紧跟着的具名参数指定,它会是包含传递给函数的其他参数的一个数组。
函数只能有一个剩余参数,而且它必须放在最后。ast

function add(a, ...last){
    let b = 0;for(let i=0;i<last.length;i++){
        b += last[i];
    }return a + b ;    
}
console.log(add(1)); //1console.log(add(1,2)); //3console.log(add(1,2,3)); //6

扩展运算符function

剩余参数把多个独立的参数合并到一个数组中;扩展运算符则容许将一个数组分割,并将各个项做为分离的参数传给函数。

//Math.max()方法接受任意数量的参数let a = 25,
    b = 50;    
console.log(Math.max(a,b)); //50//ES5或更早版本let values = [25,50,75,100];
console.log(Math.max.apply(Math, values)); //100//扩展运算符console.log(Math.max(...values));//100

 

箭头函数

没有参数

var f = () => 'Hello';
console.log(f()); //Hello

一个参数

var f = a => a * a;
console.log(f(2)); //4

多个参数

var f = (a,b) => a + b;
console.log(f(2,3)); //5

 建立当即调用函数表达式

//传统函数let f1 = function(name){return {
        getName: function(){return name;
        }
    }
}("f1");
console.log(f1.getName()); //f1//箭头函数let f2 = ((name) => {return {
        getName: function(){return name;
        }
    }
})("f2");
console.log(f2.getName()); //f2
相关文章
相关标签/搜索