1、参数默认值
function log(x, y ='world'){
console.log(x,y);
}
log('hello'); // hello world
log('hello','china'); //hello china --默认值可以覆盖
function foo(x = 5){
let x = 1; //error
const x =2; //error --默认声明后,不可以再重复声明
}
与解构结合
function foo({x, y = 5}){
console.log(x,y);
}
foo({}); //undefined,5
foo({x:1}) //1,5
foo({x:1,y:2}) //1,2
foo(); //error
理解下面两种写法:
//写法一
function m1({x = 0, y = 0} = {}){
rerurn [x,y];
}
函数参数的默认值是空对象,但是设置了对象解构赋值的默认值
//写法二
function m2({x,y} = {x:0, y:0}){
return [x,y]
}
函数参数的默认值是一个具有属性的对象,但没有设置对象解构赋值的默认值
m1() //[0,0]
m2() //[0,0]
m1({x:3,y:8}) //[3,8]
m2({x:3,y:8}) //[3,8]
m1({x:3}) //[3,0]
m2({x:3}) //[3,undefined]
m1({}) //[0, 0];
m2({}) //[undefined, undefined]
m1({z: 3}) //[0, 0]
m2({z: 3}) //[undefined, undefined]