当前位置: 首页> 财经> 产业 > 如果你想了解信息_公众平台小程序_郑州网络推广软件_网址seo关键词

如果你想了解信息_公众平台小程序_郑州网络推广软件_网址seo关键词

时间:2025/8/6 5:32:14来源:https://blog.csdn.net/Z09111616/article/details/147565725 浏览次数:0次
如果你想了解信息_公众平台小程序_郑州网络推广软件_网址seo关键词

在 JavaScript 中,给函数参数设置默认值主要有以下几种方式:

1. 函数体内手动检查赋值(ES5 及以前)

在函数内部检查参数是否为 undefined,然后手动赋值默认值。

function greet(name, age) {name = name !== undefined ? name : 'Guest';age = age !== undefined ? age : 18;return `Hello, ${name}! You are ${age} years old.`;
}console.log(greet()); // "Hello, Guest! You are 18 years old."
console.log(greet("Alice", 30)); // "Hello, Alice! You are 30 years old."

2. 短路运算符(||)

使用逻辑或运算符(||)为参数提供默认值,但这种方式会将所有假值(如 0false'')都替换为默认值,可能导致意外结果

function greet(name, age) {name = name || 'Guest';age = age || 18;return `Hello, ${name}! You are ${age} years old.`;
}console.log(greet()); // "Hello, Guest! You are 18 years old."
console.log(greet("", 0)); // "Hello, Guest! You are 18 years old." ❌ 不符合预期

3. ES6 箭头函数 + 解构赋值

结合箭头函数和解构赋值,为参数对象的属性设置默认值

const greet = ({ name = 'Guest', age = 18 } = {}) => {return `Hello, ${name}! You are ${age} years old.`;
};console.log(greet()); // "Hello, Guest! You are 18 years old."
console.log(greet({ name: "Alice" })); // "Hello, Alice! You are 18 years old."

4. ES6 参数默认值(最推荐)

直接在函数参数列表中为参数赋值默认值,这是 ES6 引入的标准语法,简洁且语义明确

function greet(name = 'Guest', age = 18) {return `Hello, ${name}! You are ${age} years old.`;
}console.log(greet()); // "Hello, Guest! You are 18 years old."
console.log(greet("Alice")); // "Hello, Alice! You are 18 years old."

特点

  • 只有当参数为 undefined 时才会触发默认值(传递 null 不会触发)。
  • 可以使用前面已定义的参数计算后续参数的默认值:

    javascript

    function calculate(total = 100, discount = total * 0.1) {return total - discount;
    }
    console.log(calculate()); // 90
    

5. 对象解构 + 默认值

当函数接受一个对象参数时,通过解构赋值为对象属性设置默认值。

function greet(options) {const { name = 'Guest', age = 18 } = options;return `Hello, ${name}! You are ${age} years old.`;
}console.log(greet({ name: "Alice" })); // "Hello, Alice! You are 18 years old."
console.log(greet()); // ❌ 报错:Cannot destructure property 'name' of 'options' as it is undefined.

改进: 为整个参数设置空对象默认值,避免不传参时的错误:

function greet({ name = 'Guest', age = 18 } = {}) {// ...
}
console.log(greet()); // "Hello, Guest! You are 18 years old."

6. 函数调用时动态计算默认值

将默认值设置为一个函数调用,每次调用原函数时动态生成默认值。

function getDefaultAge() {return new Date().getFullYear() - 2000;
}function greet(name = 'Guest', age = getDefaultAge()) {return `Hello, ${name}! You are ${age} years old.`;
}console.log(greet()); // "Hello, Guest! You are 25 years old." (假设当前年份是 2025)

总结对比

方式优点缺点
ES6 参数默认值简洁、语义明确、标准语法仅支持 undefined 触发
对象解构适合复杂参数结构需要额外处理不传参的情况
短路运算符简单易用会误判所有假值(如 0''
函数体内赋值兼容性好(ES5 及以前)代码冗余

最佳实践

  • 简单参数:优先使用 ES6 参数默认值。
  • 复杂参数对象:结合对象解构和默认值,避免传入空对象时的错误。
  • 动态默认值:通过函数调用生成默认值,确保每次调用时计算最新值。

选择合适的方式可以让你的代码更简洁、更健壮!

关键字:如果你想了解信息_公众平台小程序_郑州网络推广软件_网址seo关键词

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: