//1、参数默认值 位置在所有形参的后面 //es6之前的采取的默认值只能变相采取 function test(a,b) { a=a||2; b=b||2; return a*b } console.log(test()); //但是这个有弊端 当我们传递的值为0的时候,还是会走默认值。改造之后 function test1(a,b) { a=typeof a==="undefined"?2:a; b=typeof b==="undefined"?2:b; return a*b } console.log(test1(0,0)) // es6为我们提供了默认值 // 语法糖: function(a,b=2){} let test2=(a=2,b=2) =>{ return a*b }; console.log(test2());

//使用默认参数的时候,函数的形参中的参数名字不能和默认参数的名字一样 会报错。但是不是默认参数的时候可以是相同的名字 function fn (a,a) { return arguments[0]*arguments[1] }; console.log(fn(2,2)); //但是如果使用的是默认参数的时候不能同名 function fn1 (a,a=2) { console.log(2) } console.log(fn1(2,2));

1 // 默认参数 不是传值,每次在使用的时候都会进行计算,惰性求值。 2 let a=(a,b=2+1)=>{ 3 return a*b 4 }; 5 console.log(a(2));
1 let valEx=(a=2,b=2)=>{ 2 console.log("执行一次"); 3 return a*b 4 }; 5 let a=(a,b=valEx())=>{ 6 return a*b 7 }; 8 console.log(a(2));

原文:https://www.cnblogs.com/evilliu/p/10929391.html