ES6函数参数的扩展

一、默认参数

基本用法

function fn(name,age=17){ 

    console.log(name+","+age);

}

fn("Amy",18);  // Amy,18

fn("Amy","");  // Amy,  传递的参数为空,不会使用默认值

fn("Amy");    // Amy,17

fn("Amy",undefined);    // Amy,17  传递的参数为undefiend,使用默认值

fn("Amy",null); // Amy,null

fn("Amy",NaN); // Amy,NaN

小结:只有在未传递参数,或者参数为 undefined 时,才会使用默认参数,null /"" /false /NaN 值则被认为是有效的值传递。

函数参数默认值存在暂时性死区,在函数参数默认值表达式中,还未初始化赋值的参数值无法作为其他参数的默认值。

function f(x,y=x){    

    console.log(x,y);

}

fn(1);  // 1 1 

function fn(x=y){

    console.log(x);

}

fn();  // ReferenceError: y is not defined

二、不定参数

不定参数用来表示不确定参数个数,形如,...变量名,由...加上一个具名参数标识符组成。具名参数只能放在参数组的最后,并且有且只有一个不定参数。

基本用法

function fn(...values){

    console.log(values.length);

}

fn(1,2);      //2

fn(1,2,3,4);  //4

你可能感兴趣的:(ES6函数参数的扩展)