JavaScript函数中的默认参数值

Dou*_*ord 222 javascript arguments function

可能重复:
如何为javascript函数创建参数的默认值

在PHP中:

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

你怎么能用JavaScript做到这一点?

如果我尝试在函数参数中赋值,则会出错

缺少)正式参数后

Rav*_*afi 375

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

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

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

   //your code
}
Run Code Online (Sandbox Code Playgroud)

然后你可以调用它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);
Run Code Online (Sandbox Code Playgroud)

  • @Aftershock` ==`有一些已知的问题,所以最好使用`===`,除非`==`是必要的.请参阅http://stackoverflow.com/questions/359494/javascript-vs-does-it-matter-which-equal-operator-i-use (4认同)
  • @Ziggy:从FF 15.0开始,FF确实支持默认参数.它是目前唯一可以这样做的浏览器,但是这个功能是针对ECMAScript 6提出的 - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/default_parameters (3认同)

Boo*_*jaa 137

ES2015起:

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

function A(a, b = 4, c = 5) {
}
Run Code Online (Sandbox Code Playgroud)

或与ES2015解构相结合,

function B({c} = {c: 2}, [d, e] = [3, 4]) {
}
Run Code Online (Sandbox Code Playgroud)

有关详细说明,

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

如果没有传递未定义,则默认函数参数允许使用默认值初始化形式参数.

预ES2015:

如果您要处理的值不是数字,字符串,布尔值NaN,或者null您可以使用

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

param || DEFAULT_VALUE
Run Code Online (Sandbox Code Playgroud)

例如,

function X(a) {
  a = a || function() {};
}
Run Code Online (Sandbox Code Playgroud)

虽然这看起来简单,还挺有效,这是限制性的,因为可以反模式||上的所有falsy值(操作"",null,NaN,false,0)太-这使得这种方法,不能指定设置了一个param作为参数传递的falsy值.

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

function C(a, b) {
  a = typeof a === 'undefined' ? DEFAULT_VALUE_A : a;
  b = typeof b === 'undefined' ? DEFAULT_VALUE_B : b;
}
Run Code Online (Sandbox Code Playgroud)

  • 那不对.*任何*"falsey"值将导致设置默认值.假义值是"NaN","undefined","null","0","""`,"false". (25认同)
  • 排序...除非a === false然后a =默认值 (13认同)

jtb*_*des 12

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

function func(a, b) {
    if (a === undefined) a = "default value";
    if (b === undefined) b = "default value";
}
Run Code Online (Sandbox Code Playgroud)

另请注意,此问题之前已得到解答 .


tka*_*ahn 5

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

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

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

      alert("a: " + a + " b: " + b);
    }
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

206740 次

最近记录:

8 年,1 月 前