给函数参数直接赋初始值,实参没传(undefined)时自动用默认值。
| 以前 · 手动判断 | 现在 · 参数默认值 |
|---|---|
function add(a, b, c) {
if (c === undefined) c = 10;
return a + b + c;
}
console.log(add(1, 2));
// 13
|
function add(a, b, c = 10) {
return a + b + c;
}
console.log(add(1, 2));
// 13(c 自动用默认值 10)
console.log(add(1, 2, 3));
// 6(传了就用实参)
|
| 以前 · || 的坑 | 现在 · 更准确 |
|---|---|
// 以前用 || 兜底:0、"" 也会被换掉
function f(a, b) {
b = b || 10;
}
console.log(f(1, 0));
// 10(0 被当成假值,错了)
|
// 默认值只在 undefined 时生效
function f(a, b = 10) {
return b;
}
console.log(f(1, 0));
// 0(0 是有效值,不被换)
console.log(f(1, undefined));
// 10(undefined 才触发默认值)
|
| 以前 | 现在 |
|---|---|
function fn(obj) {
let name = obj.name || "未知";
console.log(name);
}
fn({});
// 未知
|
function fn({ name = "未知" } = {}) {
console.log(name);
}
fn({});
// 未知
|