ECMAScript 2016(ES7)是 JavaScript 的一个较新的标准,它为开发者提供了许多新的特性。其中之一就是“可选参数”,它允许函数在被调用时传入可选的参数。本篇文章将详细介绍“可选参数”的用法,并给出实例。
可选参数的定义
在 JavaScript 中,函数可以定义一个或多个参数。但是,如果调用该函数时不传入所有参数,函数将无法正常工作。这时就需要使用一些默认值来取代缺失的参数,才能使函数正确执行。
ES6 引入了默认参数,这是一个函数定义时就确定的参数,即使调用函数时没有传递任何参数,该参数也有一个默认值。而 ES7 的可选参数则更加灵活,它在调用函数时可以传入或者不传入,缺省时将有一个默认值。
可选参数的语法
可选参数的语法非常简单,只需要在参数名称后加上一个问号即可:
function funcName(param1, param2?) { // function code here }
这样,函数就会接受一个可选参数,这个参数可以省略或者给定默认值。
可选参数的应用
我们来看一个具体的例子。假设我们有一个函数可以计算两个数的和:
function add(a, b) { return a + b; }
这个函数可以按照如下方式调用:
let sum = add(2,3); // sum 的值为 5
但是如果我们只传入一个参数,函数会返回 NaN:
let sum = add(2); // sum 的值为 NaN
为了解决这个问题,我们可以对代码进行修改,添加默认参数即可:
function add(a, b=0) { return a + b; }
这样,如果我们传入一个参数,函数会使用默认值 0 来替代缺失的参数。我们现在再次调用这个函数:
let sum = add(2); // sum 的值为 2
这时,函数返回了预期的结果。
我们也可以使用可选参数来完善这个函数。例如,我们希望这个函数支持传入一个可选的第三个参数,表示是否做减法运算。如果第三个参数为真,那么函数将返回两个参数的差,否则返回它们的和。我们可以按照如下方式定义函数:
function calc(a, b, subtract) { if (subtract) { return a - b; } else { return a + b; } }
这个函数按照如下方式调用:
console.log(calc(3,4)); // 输出 7 console.log(calc(3,4,true)); // 输出 -1
但是,该函数将不支持当第一个参数为零时,程序的正确运行将受到影响,因为零被视为 false,导致第三个参数被错误地省略了。为了避免这种情况,我们可以将第三个参数改为可选参数,并设置默认值为 false,使第三个参数在不传递时等于 false:
function calc(a, b, subtract=false) { if (subtract) { return a - b; } else { return a + b; } }
这个函数现在可以这样调用:
console.log(calc(0)); // 输出 0 console.log(calc(3,4)); // 输出 7 console.log(calc(3,4,true)); // 输出 -1
总结
ECMAScript 2016 的可选参数使得函数的参数更加灵活,让开发者可以定制化他们的函数参数。本文示范了如何使用可选参数来构建更加健壮的函数,以及在不传递某些参数时使用默认值。掌握可选参数的应用,将有助于您编写更加高效的 JavaScript 代码。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64b2b83748841e9894ede48b