日期:2014-05-16  浏览次数:20355 次

Javascript里面调用函数的参数可以和原来函数数目不一致吗?
刚看到一个函数
JScript code
function showMenu(ctrlid, click, offset, duration, timeout, layer, showid, maxh) 
{
}

但是再调用它的地方却只用到了 一个参数,象这样onMouseOver="showMenu(this.id);" 

这样可以吗?我以前很少研究js,貌似类似于其他函数重载呀,但是其他参数都不用了这样业可以运行吗?

------解决方案--------------------
没有赋值的参数就是undefined
JScript code
<script language="javascript" type="text/javascript">
function test(a, b, c)
{
    alert("a=" + a + "\r\nb=" + b  + "\r\nc=" + c);
}
test("1");
//    a=1
//    b=undefined
//    c=undefined
</script>

------解决方案--------------------
可以的 ,js支持参数缺省
------解决方案--------------------
应该这样说:javascript允许参数缺失,未传入值得形参为 undefined 格式数据 
javacript 不支持缺省参数,要实现参数缺省其实需要自己判断各个形式参数是否有合理定义格式和值,对不正确的进行初始化。
比如:
function test(fun,str1,str2){
if (typeof str1 != 'string') str1='';
if (typeof str2 != 'string') str2='';
if (typeof fun != 'function') fun=null;
if (fun){
return fun(str1,str2);
}else{
alert("no");
return null;
}
}
function strshow(str1,str2){
var tmp=str1+str2;
alert(tmp);
return null;
}
test();
test(strshow);
test(strshow,"ok1");
test(strshow,"ok1","ok2");
test(strshow,"ok1","ok2","ok3");


真正支持缺省参数的语言有python等。
------解决方案--------------------
可以根据arguments来判断
function test()


swith(arguments.length)
{
case 0:
break;
case 1:
//---- 
alert(arguments[0]);
break;
default:
}
}