处理JavaScript函数中没有参数

问题描述:

我几乎没有JavaScript的经验,但在其他编程语言中可能会有以下情况,为函数中缺少的参数设置默认值。处理JavaScript函数中没有参数

例如可以说,我有一个函数

function foo(a , b) 
    return a + b 
{ 

我想能够调用上述功能与1个参数或2个参数

一个参数的情况下:

foo(2) //a =2 and b would be automatically set to a default no argument value, 

两参数情况:

foo(1,2) // a = 1 , b = 2 => 3 

这是可能在JavaScript是IE 8兼容或使用jQuery 1.7.2?

JavaScript函数允许你打电话给他们以低于参数指定。

你要完成什么是有可能做一些这样的:

function foo(a , b){ 
    if(typeof b === "undefined"){ 
     b=3; 
    } 
    return a + b; 
} 
foo(5);//return 3; 

我强烈建议你检查undefined依靠||运营商。我花了几个小时调试代码,做出了这个假设,并在通过0或其他虚假值时失败。 JavaScript类型的系统可能会变得非常棘手,例如"0"是虚假的。

和谐的ECMAScript(下一版本)可以像其它语言使用以下语法

function foo(a , b=3){ 
    return a + b; 
} 

这不会像IE8的第一个版本的工作,虽然默认参数。

+1

这是最好的答案,你是唯一一个真正在检查'undefined'的人... – 2013-03-08 00:26:46

+0

是的确需要undefined检查 – pyCthon 2013-03-08 00:33:01

+0

@pyCthon如果你喜欢我的回答,请考虑接受它,或者告诉我你没有做什么认为是明确的enoug h我可以改进它。 – 2013-03-08 01:11:13

是的,这是可能的。如果一个参数没有被传递,你会得到一个特殊的值“undefined”。对我来说,以下工作:

function foo(a, b) { 
    a = a || defaultForA; 
    b = b || defaultForB; 

} 

由于方式的Javascript对待转换为boolean时,以下都将在上面的代码片断认为是未定义:

undefined 
null 
0 
"" (empty string) 
false 

所以,如果这些价值观是很重要你,你需要明确地测试未定义的而不是上面使用的“如果没有错误”测试。

没有,但你可以用三级运营商或手动模拟这种效果if语句(只需确保您检查undefined!):

function foo(a, b) { 
    b = (typeof b === "undefined") ? 2 : b; 

    return a + b; 
} 

一个未定义的参数的计算结果为假,所以你可以做这样的事情在你的函数foo的beggining:如果a或b存在

a = a || 0; 
b = b || 0; 

这样一来,他们将用自己的价值观来评价和否则为0。

如果您收到一个参数,您可以测试:

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

通过测试“未定义”也可以接受值为false参数(如null""0false