ECMAScript 2019 中的函数默认参数:为函数参数提供默认值
ES2019(ES10)是 ECMAScript 标准的最新版本,它引入了许多新的特性和语法,其中一个是函数默认参数。函数默认参数允许函数的形参提供默认值,这样在调用函数时,不必给它们传递参数,也可以正常运行。接下来我们将详细介绍 ECMAScript 2019 中函数默认参数的语法、用法和注意事项,帮助前端开发人员更好地了解它们,增强开发体验和效率。
函数默认参数的语法
函数默认参数的语法是:在函数定义时,使用赋值运算符 = 赋予参数一个默认值,例如:
function add(a, b=1) {
return a + b;
}
console.log(add(4)); //输出:5
console.log(add(4,2)); //输出:6 在这个例子中,add 函数定义了两个参数 a 和 b。参数 b 的默认值是 1 ,这意味着如果没有把第二个参数传递给函数,则使用默认值 1。
函数默认参数的用法
函数默认参数的用法非常灵活,使得我们可以以更简单的方式编写函数,避免了需要检测是否传递了参数的麻烦。例如:
function power(base=2, exponent=1) {
return Math.pow(base, exponent);
}
console.log(power()); //输出:2
console.log(power(2)); //输出:2
console.log(power(2,3)); //输出:8 在这个例子中,power 函数定义了两个参数,其中 base 的默认值为 2, exponent 的默认值为1。如果我们仅调用 power() ,那么 base 和 exponent 都会使用默认值。如果我们只向 power 函数传递一个参数,例如 power(2) ,则参数 2 将用于 base, exponent 仍使用默认值,这样 power 函数就相当于调用 power(2,1) 。如果我们愿意,我们可以指定所有的值,并将它们传递给函数。
函数默认参数的注意事项
虽然函数默认参数为 JavaScript 开发人员带来了便利,但还需要我们注意一些问题,以便我们正确地使用它们。
首先,函数默认参数的默认值仅在未被传递时应用,但 undefined 仍被视为传入值。例如,在以下代码中:
function multiply(a, b=1) {
return a * b;
}
console.log(multiply(3, undefined)); //输出:3 multiply 函数将输出 3,即使 b 参数没有被传递。原因是我们传递了 undefined 值来代替 b 参数。如果我们将参数 b 更改为:
function multiply(a, b) {
b = b || 1;
return a * b;
}
console.log(multiply(3)); //输出:3 那么函数将在不传递任何参数时具有默认值。
其次,函数默认参数的默认值是惰性求值的。这意味着在函数调用时会执行并获取默认值。例如,在以下代码中:
let max = 1;
function find(value, max=max) {
return value > max;
}
console.log(find(2)); //输出:true max 参数的默认值为 max,但实际上,max 的值被设置为1,因此在 find 函数的调用中, max 将具有 1 的值。
函数默认参数究竟是怎样在 JavaScript 中工作的?它们似乎是一个巧妙的语法糖,使 JavaScript 变得更加简洁易读。但它们也有助于我们更好地组织代码和减少错误,尤其是当每个参数都要做相同的检查时,例如默认为空值或必须为数字时。无论如何,学习这个东西,可以使您花费更少的时间编写更好的代码,并进行更少的测试。
示例代码
下面是一些示例代码,用于演示函数默认参数的用法和一些注意事项。
// www.javascriptcn.com code example
function greet(name="World") {
console.log("Hello " + name + "!");
}
greet(); //输出:Hello World!
greet("Alice"); //输出:Hello Alice!
greet(undefined); //输出:Hello World!
function find(value, max=1) {
return value > max;
}
console.log(find(2)); //输出:true
console.log(find(0)); //输出:false
let defaultName = "Alex";
function printName(name=defaultName) {
console.log(name);
}
defaultName = "Bob";
printName(); //输出:Bob
printName("Charlie"); //输出:Charlie 总结
函数默认参数是 ECMAScript 2019 中一个很有用的新特性,可以让我们编写更灵活的代码。它可以减少代码中大量的NULL值检查,从而为使代码更简洁。我们看到函数默认参数可以用于处理输入检查,简化 API 的调用等很多场景。对于任何 JavaScript 开发人员来说,属于是一项非常有用的语言功能。
Source: FunTeaLearn,Please indicate the source for reprints https://funteas.com/post/64a41e9d48841e989408aa68