02 ES6的函数参数默认值

函数参数的默认值是 ECMAScript 2015 (ES6) 引入的功能,它允许你在函数定义时为参数指定默认值。当函数被调用时,如果没有为某个参数提供值,或者提供了 undefined,那么就会使用这个默认值。

以下是函数参数默认值的一些关键点和用法示例:

基本用法

javascript 复制代码
function greet(name = 'Guest') {
  console.log(`Hello, ${name}!`);
}

greet();        // 输出 "Hello, Guest!" 因为没有提供 name 参数
greet('Alice'); // 输出 "Hello, Alice!" 使用提供的 name 参数

在这个例子中,如果调用 greet 函数时没有提供 name 参数,name 将默认为 'Guest'

参数列表中的默认值

默认值可以设置在参数列表的任意位置,但一旦参数有默认值,它右边的所有参数也必须有默认值。

javascript 复制代码
function greet(name, message = 'Hello') {
  console.log(`${message}, ${name}!`);
}

// 这将抛出错误,因为 message 有默认值,但 age 没有
// greet('Alice');

greet('Alice', 'Hi'); // 输出 "Hi, Alice!"
greet('Alice');       // 输出 "Hello, Alice!" 使用 message 的默认值

与解构赋值结合使用

默认值可以与解构赋值结合使用,为更复杂的参数结构提供默认值。

javascript 复制代码
function configure(options = {}) {
  console.log(`Width: ${options.width || 'default width'}`);
  console.log(`Height: ${options.height || 'default height'}`);
}

configure({ width: 100 }); // 输出 "Width: 100" 和 "Height: default height"
configure();               // 输出 "Width: default width" 和 "Height: default height"

默认值是一次求值的

参数的默认值表达式在函数定义时求值一次,而不是每次调用函数时。

javascript 复制代码
let defaultGreeting = 'Hello';

function greet(name, greeting = defaultGreeting) {
  console.log(`${greeting}, ${name}!`);
}

(defaultGreeting = 'Hi');
greet('Alice'); // 即使 defaultGreeting 已改变,依然输出 "Hello, Alice!"

函数的剩余参数

剩余参数(rest parameters)也可以用默认值。

javascript 复制代码
function sum(...numbers = []) {
  return numbers.reduce((total, num) => total + num, 0);
}

console.log(sum());  // 输出 0,因为没有提供任何参数
console.log(sum(1)); // 输出 1
console.log(sum(1, 2, 3, 4)); // 输出 10

函数参数的默认值提供了一种方便的方式来定义函数,使得函数调用更加灵活和健壮。开发者可以根据需要提供参数,或者依赖预设的默认值。

相关推荐
艾小逗8 分钟前
uniapp快速入门教程,内容来源于官方文档,仅仅记录快速入门需要了解到的知识点
小程序·uni-app·app·es6
程序员凡尘18 分钟前
完美解决 Array 方法 (map/filter/reduce) 不按预期工作 的正确解决方法,亲测有效!!!
前端·javascript·vue.js
编程零零七4 小时前
Python数据分析工具(三):pymssql的用法
开发语言·前端·数据库·python·oracle·数据分析·pymssql
北岛寒沫5 小时前
JavaScript(JS)学习笔记 1(简单介绍 注释和输入输出语句 变量 数据类型 运算符 流程控制 数组)
javascript·笔记·学习
everyStudy5 小时前
JavaScript如何判断输入的是空格
开发语言·javascript·ecmascript
(⊙o⊙)~哦6 小时前
JavaScript substring() 方法
前端
无心使然云中漫步6 小时前
GIS OGC之WMTS地图服务,通过Capabilities XML描述文档,获取matrixIds,origin,计算resolutions
前端·javascript
Bug缔造者6 小时前
Element-ui el-table 全局表格排序
前端·javascript·vue.js
xnian_7 小时前
解决ruoyi-vue-pro-master框架引入报错,启动报错问题
前端·javascript·vue.js
麒麟而非淇淋8 小时前
AJAX 入门 day1
前端·javascript·ajax