Default argument values in JavaScript functions
Possible Duplicate:
How do I make a default value for a parameter to a javascript function
在PHP中:
1 2 3 | function func($a = 10, $b = 20){ // if func() is called with no arguments $a will be 10 and $ b will be 20 } |
如何在JavaScript中实现这一点?
如果我试图在函数参数中赋值,我会得到一个错误。
missing ) after formal parameters
在JavaScript中,您可以不带参数地调用函数(即使它有参数)。
因此,可以添加如下默认值:
1 2 3 4 5 6 | function func(a, b){ if (typeof(a)==='undefined') a = 10; if (typeof(b)==='undefined') b = 20; //your code } |
然后可以像
这是一个测试:
1 2 3 4 5 6 7 8 9 10 11 | function func(a, b){ if (typeof(a)==='undefined') a = 10; if (typeof(b)==='undefined') b = 20; alert("A:"+a+" B:"+b); } //testing func(); func(80); func(100,200); |
ES2015:
从ES6/ES2015开始,我们在语言规范中有默认参数。所以我们可以做一些简单的事情,比如,
1 2 | function A(a, b = 4, c = 5) { } |
或结合ES2015破坏,
1 2 | function B({c} = {c: 2}, [d, e] = [3, 4]) { } |
详细解释如下:
https://developer.mozilla.org/en/docs/web/javascript/reference/functions/default_参数
Default function parameters allow formal parameters to be initialized with default values if no value or undefined is passed.
前ES2015:
如果要处理不是数字、字符串、布尔值、
(因此,对于您计划永远不发送
1 | param || DEFAULT_VALUE |
例如,
1 2 3 | function X(a) { a = a || function() {}; } |
虽然这看起来很简单,也有点效果,但这是限制性的,而且可能是反模式的,因为
因此,为了只显式地处理
1 2 3 4 | function C(a, b) { a = typeof a === 'undefined' ? DEFAULT_VALUE_A : a; b = typeof b === 'undefined' ? DEFAULT_VALUE_B : b; } |
必须检查参数是否未定义:
1 2 3 4 | function func(a, b) { if (a === undefined) a ="default value"; if (b === undefined) b ="default value"; } |
还要注意,这个问题以前已经回答过。
我从来没有在javascript中看到过这样做。如果您希望函数具有可选参数,如果省略参数,则会获得指定的默认值,下面是一种方法:
1 2 3 4 5 6 7 8 9 10 11 | function(a, b) { if (typeof a =="undefined") { a = 10; } if (typeof b =="undefined") { a = 20; } alert("a:" + a +" b:" + b); } |
1 2 3 4 5 6 7 8 9 | 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); } |
速记
1 2 3 4 5 6 7 8 | 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); } |
不能为函数参数添加默认值。但你可以这样做:
1 2 3 4 5 6 7 8 | function tester(paramA, paramB){ if (typeof paramA =="undefined"){ paramA = defaultValue; } if (typeof paramB =="undefined"){ paramB = defaultValue; } } |