JavaScript函数中的默认参数值

可能重复:
如何为JavaScript函数的参数设置默认值

在PHP中:

function func($a = 10, $b = 20){ // if func() is called with no arguments $a will be 10 and $ b will be 20 } 

你怎么能在JavaScript中做到这一点?

如果我尝试在函数参数中分配值,会出现错误

缺less)正式参数后

在JavaScript中,你可以调用一个没有参数的函数(即使它有参数)。

所以你可以添加这样的默认值:

 function func(a, b){ if (typeof(a)==='undefined') a = 10; if (typeof(b)==='undefined') b = 20; //your code } 

然后你可以把它叫做func(); 使用默认参数。

这是一个testing:

 function func(a, b){ if (typeof(a)==='undefined') a = 10; if (typeof(b)==='undefined') b = 20; alert("A: "+a+"\nB: "+b); } //testing func(); func(80); func(100,200); 

ES2015起:

在ES6 / ES2015中,我们在语言规范中有默认参数。 所以我们可以做一些简单的事情,

 function A(a, b = 4, c = 5) { } 

或者结合ES2015解构 ,

 function B({c} = {c: 2}, [d, e] = [3, 4]) { } 

有关详细说明,

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/default_parameters

如果没有值undefined被传递,默认的函数参数允许使用默认值初始化forms参数。

Pre ES2015:

如果你要处理不是数字,string,布尔, NaNnull你可以简单地使用

(所以,对于您计划永远不会发送null对象,数组和函数,您可以使用)

 param || DEFAULT_VALUE 

例如,

 function X(a) { a = a || function() {}; } 

虽然这看起来简单而有点作品,这是限制性的,可以是反模式,因为|| 对所有的falsy值进行操作( ""nullNaNfalse0 ) – 这使得这个方法不可能将一个参数赋值为作为parameter passing的falsy值。

所以,为了只处理undefined值,首选的方法是,

 function C(a, b) { a = typeof a === 'undefined' ? DEFAULT_VALUE_A : a; b = typeof b === 'undefined' ? DEFAULT_VALUE_B : b; } 

你必须检查参数是否未定义:

 function func(a, b) { if (a === undefined) a = "default value"; if (b === undefined) b = "default value"; } 

另外请注意,这个问题已经回答了 。

我从来没有在JavaScript中看到过这种方式。 如果你想要一个具有可选参数的函数,如果这些参数被忽略,那么这个参数将被赋予默认值,这里有一个方法:

  function(a, b) { if (typeof a == "undefined") { a = 10; } if (typeof b == "undefined") { a = 20; } alert("a: " + a + " b: " + b); } 
 function func(a, b) { if (typeof a == 'undefined') a = 10; if (typeof b == 'undefined') b = 20; // do what you want ... for example alert(a + ',' + b); } 

简写

 function func(a, b) { a = (typeof a == 'undefined')?10:a; b = (typeof b == 'undefined')?20:b; // do what you want ... for example alert(a + ',' + b); } 

您不能添加function参数的默认值。 但是你可以这样做:

 function tester(paramA, paramB){ if (typeof paramA == "undefined"){ paramA = defaultValue; } if (typeof paramB == "undefined"){ paramB = defaultValue; } }