可能重复:
如何为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做到这一点?
如果尝试在函数参数中分配值,则会收到错误消息
缺少)形式参数后
在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);
从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
如果未传递任何值或未定义,则默认函数参数允许使用默认值初始化形式参数。
ES2015之前的版本:
如果要处理非数字,字符串,布尔值NaN
或的值,则null
可以简单地使用
(因此,对于您计划从不发送的对象,数组和函数,null
可以使用)
param || DEFAULT_VALUE
例如,
function X(a) {
a = a || function() {};
}
虽然这看起来简单,还挺有效,这是限制性的,因为可以反模式||
上的所有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;
}
您必须检查参数是否未定义:
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 tester(paramA, paramB){
if (typeof paramA == "undefined"){
paramA = defaultValue;
}
if (typeof paramB == "undefined"){
paramB = defaultValue;
}
}
本文地址:http://javascript.askforanswer.com/javascripthanshuzhongdemorencanshuzhizhongfu.html
文章标签:arguments , function , javascript
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!
文章标签:arguments , function , javascript
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!
评论已关闭!