在 Es2015 中,JavaScript 引入了许多新特性,其中包括箭头函数、解构赋值、let 和 const 声明等。而在 Es2019 中,JavaScript 也新增了一些新特性,其中包括函数参数与默认值的处理方式。
传统的函数参数
在 JavaScript 中,函数的参数是非常灵活的。我们可以在函数定义时指定参数,也可以不指定参数。如果不指定参数,我们可以在函数内部通过 arguments 对象获取传入的参数。例如:
// javascriptcn.com 代码示例 function add() { var sum = 0; for (var i = 0; i < arguments.length; i++) { sum += arguments[i]; } return sum; } console.log(add(1, 2, 3)); // 6 console.log(add(1, 2, 3, 4, 5)); // 15
在上面的例子中,我们定义了一个 add 函数,它没有指定参数。在函数内部,我们使用了 arguments 对象获取传入的参数,并计算它们的总和。
函数参数的默认值
在 Es2015 中,JavaScript 引入了默认参数的概念。通过指定函数参数的默认值,我们可以在函数调用时省略这些参数。例如:
function greet(name = 'World') { console.log(`Hello, ${name}!`); } greet(); // Hello, World! greet('John'); // Hello, John!
在上面的例子中,我们定义了一个 greet 函数,它有一个 name 参数,参数的默认值为 'World'。当我们调用 greet 函数时,如果不传入参数,name 参数的默认值为 'World'。
对象解构赋值的默认值
在 Es2019 中,JavaScript 引入了对象解构赋值的默认值。通过指定对象解构赋值的默认值,我们可以在解构赋值时省略这些属性。例如:
// javascriptcn.com 代码示例 const person = { name: 'John', age: 30, }; const { name, age, gender = 'Unknown' } = person; console.log(name); // John console.log(age); // 30 console.log(gender); // Unknown
在上面的例子中,我们定义了一个 person 对象,它有 name 和 age 两个属性。在解构赋值时,我们指定了 name 和 age 两个属性的默认值,以及 gender 属性的默认值为 'Unknown'。当我们解构赋值时,如果 person 对象中没有对应的属性,将使用默认值。
剩余参数的默认值
在 Es2015 中,JavaScript 引入了剩余参数的概念。通过指定函数的剩余参数,我们可以在函数调用时传入任意数量的参数,并将它们存储在一个数组中。例如:
function sum(...numbers) { return numbers.reduce((acc, cur) => acc + cur, 0); } console.log(sum(1, 2, 3)); // 6 console.log(sum(1, 2, 3, 4, 5)); // 15
在上面的例子中,我们定义了一个 sum 函数,它有一个剩余参数 numbers。当我们调用 sum 函数时,可以传入任意数量的参数,并将它们存储在 numbers 数组中。
在 Es2019 中,JavaScript 引入了剩余参数的默认值。通过指定剩余参数的默认值,我们可以在函数调用时省略这些参数。例如:
// javascriptcn.com 代码示例 function sum(start, end, step = 1, ...numbers) { let sum = 0; for (let i = start; i <= end; i += step) { sum += i; } if (numbers.length > 0) { sum += numbers.reduce((acc, cur) => acc + cur, 0); } return sum; } console.log(sum(1, 10)); // 55 console.log(sum(1, 10, 2)); // 25 console.log(sum(1, 10, 2, 1, 2, 3)); // 34
在上面的例子中,我们定义了一个 sum 函数,它有四个参数:start、end、step 和剩余参数 numbers。其中,step 参数的默认值为 1。当我们调用 sum 函数时,如果不传入 step 参数,将使用默认值。如果传入了剩余参数 numbers,将计算它们的总和并加到结果中。
总结
在 Es2019 中,JavaScript 引入了函数参数与默认值的处理方式。通过指定函数参数的默认值、对象解构赋值的默认值、剩余参数的默认值等,我们可以使函数的定义更加灵活。这些新特性可以帮助我们编写更加简洁、易读、易维护的代码。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65592d1dd2f5e1655d3a4364