JavaScript函数中的默认参数值

时间:2011-06-26 19:48:17

标签: javascript function arguments

  

可能重复:
  How do I make a default value for a parameter to a javascript function

PHP中的

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

如何在JavaScript中执行此操作?

如果我尝试在函数参数中分配值

,则会出错
  在正式参数之后

缺失

6 个答案:

答案 0 :(得分:371)

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

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

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

   //your code
}

然后你可以像func();一样调用它来使用默认参数。

这是一个测试:

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);

答案 1 :(得分:136)

ES2015以后:

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

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

或与ES2015 destructuring合并,

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

详细说明,

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

  

如果传递无值未定义,默认函数参数允许使用默认值初始化形式参数。

Pre ES2015:

如果您要处理 NOT 数字,字符串,布尔值,NaNnull的值,您只需使用

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

param || DEFAULT_VALUE

例如,

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

虽然这看似简单且有点有效,但这是限制性的,可以是反模式,因为||对所有假值(""nullNaN进行操作,false0) - 这使得这种方法无法为参数传递作为参数传递的假值。

因此,为了只显式处理undefined值,首选方法是

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

答案 2 :(得分:12)

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

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

另请注意,此问题一直是answered before

答案 3 :(得分:5)

我从未在JavaScript中看到过这种方式。如果你想要一个带有可选参数的函数,如果省略了这些参数,那么可以获得指定的默认值,这是一种方法:

 function(a, b) {
      if (typeof a == "undefined") {
        a = 10;
      }

      if (typeof b == "undefined") {
        a = 20;
      }

      alert("a: " + a + " b: " + b);
    }

答案 4 :(得分:4)

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);
}

答案 5 :(得分:0)

您无法为功能参数添加默认值。但你可以这样做:

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