Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 默认函数参数_Javascript_Ecmascript 6 - Fatal编程技术网

Javascript 默认函数参数

Javascript 默认函数参数,javascript,ecmascript-6,Javascript,Ecmascript 6,嗨,我必须承认,我仍然掌握了很多ES6语法,尽管我已经使用了相当多的语法。 例如,我知道您可以执行console.log(乘法(5))来获得 function multiply(a, b = 1) { return a * b; } 但假设你有 function multiply(a, b = 1, c) { return a * b * c; } 显然,您不能执行(console.log(multiply(5,5))。在这种情况下,正在将函数中的参数位置重新排列为函数multipl

嗨,我必须承认,我仍然掌握了很多ES6语法,尽管我已经使用了相当多的语法。 例如,我知道您可以执行
console.log(乘法(5))
来获得

function multiply(a, b = 1) {
  return a * b;
}
但假设你有

function multiply(a, b = 1, c) {
  return a * b * c;
}

显然,您不能执行
(console.log(multiply(5,5))
。在这种情况下,正在将函数中的参数位置重新排列为
函数multiply(a,c,b=1)
唯一可行的方法?或者还有其他更聪明的方法吗?

另一种方法是使用默认属性分配传递单个对象,而不是多个单独的参数:

函数乘法({a,b=1,c}){
返回a*b*c;
}
console.log(乘法)({
a:3,
b:4,
c:5
}));
console.log(乘法)({
a:3,
c:5

}));
您可以传递
未定义的
以使用默认值:

function multiply(a, b = 1, c) {
  return a * b * c;
}

multiply(2, undefined, 3); // 6

您可以阅读有关默认参数值的内容并查看更多示例

您可以将默认参数设置为第一个参数,然后设置为第二个参数。这样做的一个好处是,您现在不仅限于3个数字

函数乘法(a=1,…args){
args=[a,…args];
返回参数reduce((x,y)=>x*y);
}
控制台日志(乘法(5));

log(multiply(5,10,15,20,25));
不幸的是,JS不支持函数参数的省略(跳过),所以您不能简单地编写

f(1,,2)
并期望第二个参数为默认值。您可以使用数组省略:

函数f(a,b=99,c){ 控制台日志(a、b、c) }
f(…[1,2])如您在此处所见,请尝试运行它。默认参数必须是最后定义的参数。或者您可以将其称为乘法(1,未定义,2)@AZ_uu默认参数可以在参数列表中的任何位置。你把它与扩展运算符混淆了吗?@Sebastiaanny我的意思是这样做是一种很好的做法,这就是为什么我添加了如何使用定义了默认值的参数调用函数。谢谢很多人的精彩回答:)