处理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的第一个版本的工作,虽然默认参数。
是的,这是可能的。如果一个参数没有被传递,你会得到一个特殊的值“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
或""
或0
或false
)
这是最好的答案,你是唯一一个真正在检查'undefined'的人... – 2013-03-08 00:26:46
是的确需要undefined检查 – pyCthon 2013-03-08 00:33:01
@pyCthon如果你喜欢我的回答,请考虑接受它,或者告诉我你没有做什么认为是明确的enoug h我可以改进它。 – 2013-03-08 01:11:13