一、默认参数
基本用法
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