我有一个功能
function test(name)
{
}
我用test("kanishka");
在一种情况下,我想将两个参数(name
和age
)传递给此函数:
test("kanishka",27);
在PHP中,我可以通过将默认值设置为age
来完成此操作:
test(name , age = NULL)
JavaScript中有没有办法做到这一点?
我试过
test(name , age = NULL)
但它会出错。
我可以声明2个函数
test(name) and test(name , age = NULL)
但它重复了代码。
或者我可以更改之前的函数调用,它将一个参数带到两个参数,为age
提供默认值:
test("kanishka" , 0)
但在这种情况下,我必须找到所有函数调用并更改它们。
答案 0 :(得分:8)
只需更改功能定义即可
test(name, age)
{
}
该功能的所有现有用途都将age
分配给undefined
值..
每当您使用第二个参数时,它都会被分配到age
参数。
如果您想要默认值,请将功能更改为
test(name, age)
{
age = (age === undefined) ? 0 : age; // change 0 to the default value you want..
}
答案 1 :(得分:4)
基本上你会做这样的事情
function foo(a, b)
{
a = typeof(a) != 'undefined' ? a : 42;
b = typeof(b) != 'undefined' ? b : 'default_b';
...
}
答案 2 :(得分:1)
即使您传递了错误数量的参数,您仍然可以调用该方法。 “optional”参数将设置为undefined,您可以使用if语句检查。
答案 3 :(得分:1)
您可以使用arguments
对象来保存传递给函数的所有参数 - 无论它们是否被定义......
test(name){
var age = arguments[1] == undefined ? 0 : arguments[1]
// do stuff here
}
答案 4 :(得分:1)
您可以使用2个参数声明该函数:
function test(name, age) {
//...
}
test("James"); //age will be undefined
test("James", 22); //age will be 22
或者您可以完全忘记参数并使用arguments
对象:
function test() {
console.log(arguments[0]);
}
通过这种方式,您可以传入任意数量的参数,并通过arguments
对象访问它们。
答案 5 :(得分:0)
为方法提供默认值的“标准”方法是检查方法体的开头是否提供了参数:
function test(name, age)
{
age = typeof(age) != 'undefined' ? age : NULL;
...
}