js不能定义函数默认值,比如写function func(arg1=1,arg2=2){}会提示缺少对象。
但我们可以用另外一个方法实现,因为js函数中有个储存参数的数组arguments ,所有函数获得的参数会被编译器挨个保存到这个数组中。于是我们的js版支持参数默认值的函数可以通过下面的方法实现:
1 2 3 4 5 6 7 8 |
function func(){ var a = (arguments[0]!=undefined) ? arguments[0] : 1; var b = (arguments[1]!=undefined) ? arguments[1] : 2; return a+b; } alert( func() ); //输出3 alert( func(10) ); //输出12 alert( func(10,20) ); //输出30 |
在看到留言的时候才发现文章里连函数名都没有写好,还是用的以前项目里的函数名,现已改好,如果有误导大家的地方,万分抱歉!
在此特别感谢像shiny@meettea.com这样能指出文章中错误和不足的朋友,你们的意见和建议是我的动力!
郑重声明:
除特别声明为转载内容外,本站所有内容均为作者原创,谢绝任何单位和个人不经许可的复制和转播!
对于确有转载需要的,请先与作者联系,在获得允许后烦请在转载时保留文章出处。
本文出自Lupin's Blog:http://www.cnzui.com/archives/162
除特别声明为转载内容外,本站所有内容均为作者原创,谢绝任何单位和个人不经许可的复制和转播!
对于确有转载需要的,请先与作者联系,在获得允许后烦请在转载时保留文章出处。
本文出自Lupin's Blog:http://www.cnzui.com/archives/162
这个方法有缺陷:func(0,1) 结果是2。
谢谢你的指正,当时只是想着告诉大家一个思路,没有考虑周全。现在已经修改了一下,测试过几个浏览器都能返回正确的结果了。在你指正这个缺陷的同时,我发现我当时连函数名都没修改过来,真是惭愧呢!再次感谢!
其实还是原来的简洁好看,在确定自己不会传入有问题的变量后也挺好用,只是我正好需要严格判断的方法,但是搜索出来的结果都是这个解决方案。
呵呵,其实只要掌握了可以用arguments来访问参数的方法,实际使用时跟据自己需要进行修改强化就好啦!