ES6函数参数的扩展

199 阅读1分钟
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/210a745b663b40cf8f609fc7ca6c1648~tplv-k3u1fbpfcp-watermark.image)
一、默认参数
基本用法
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