使用
在书写形参时,直接给形参赋值。如果调用函数时,没有给对应的参数赋值,那么则会自动使用默认值。
例子
1.使用默认值
function test(a, b) {
console.log(a, b);
}
test(undefined,2);
2.可以用参数赋值
function test(a, b = a) {
console.log(a, b);
}
test(undefined);
3.传入默认值的话,无视参数赋值
function test(a, b = a) {
console.log(a, b);
}
test(undefined,2);
4.未声明就赋值报错
function test(a = b, b) {
console.log(a, b);
}
test(undefined,2);
暂时性死区,导致错误,b还未声明就被使用了
5.调用函数时赋值比不过参数默认值
function sum(a, b = 1, c = 2) {
return a + b + c;
}
console.log(sum(10, undefined, undefined))
console.log(sum(11))
console.log(sum(1, undefined, 5))
对arguments的影响
只要给函数的参数加上默认值,那么该函数会自动变成严格模式下的规则:arguments和形参脱离,传参后给形参重新赋值,不会改变arguments。
function test(a, b = 1) {
console.log("arugments", arguments[0], arguments[1]);
console.log("a:", a, "b:", b);
a = "重新赋值";
console.log("arugments", arguments[0], arguments[1]);
console.log("a:", a, "b:", b);
}
test(1, 2);
注意不要用let声明和形参一样的变量名
因为形参也具有暂时性死区。