js中的函数参数个数问题(重载问题)
2014-05-14 13:55
323 查看
在javascript中,不存在重载机制,参数个数不是区别不同函数的标志,函数名是函数唯一的标识。
这给函数的调用带来了一定灵活,因为不用担心参数个数不匹配的问题,在函数调用时,实参会按顺序赋给形参,多余的实参会被省略掉,未被赋值的形参为undefined(就是变量声明了没赋值,在函数中判断一个参数是否被赋值了用var===undefined进行判断,注意,在函数外判断一个变量是否被声明或定义:typeof(x) == "undefined" )。
对于变量个数不确定的函数,完全可以不声明形参,在函数内部可以通过arguments来访问传递给该函数的所有的实参,其中arguments为包含所有实参的数组。
<html> <head lang="en"> <meta charset="UTF-8"> </head> <body> <script> var fun=function(arg){ console.log("我是函数1"); }; var fun=function(arg1,arg2){ console.log("我是函数2"); }; var arg1=1; var arg2=2; fun(arg1); fun(arg1,arg2); </script> </body> </html>输出为:
我是函数2 我是函数2从上面这个例子可以看出,第二个函数的定义覆盖了第一个函数,fun这个名字最终指向了第二个函数,第一个函数消失了,永远不会被调用到了,这跟变量的覆盖是一样的,js中还不存在变量重名的问题,后面定义的变量总会覆盖前面已经定义的变量。
这给函数的调用带来了一定灵活,因为不用担心参数个数不匹配的问题,在函数调用时,实参会按顺序赋给形参,多余的实参会被省略掉,未被赋值的形参为undefined(就是变量声明了没赋值,在函数中判断一个参数是否被赋值了用var===undefined进行判断,注意,在函数外判断一个变量是否被声明或定义:typeof(x) == "undefined" )。
对于变量个数不确定的函数,完全可以不声明形参,在函数内部可以通过arguments来访问传递给该函数的所有的实参,其中arguments为包含所有实参的数组。
相关文章推荐
- 在js中如何实现方法重载?以及函数的参数问题
- [置顶] 在js中如何实现方法重载?以及函数的参数问题
- js 函数参数值问题
- js传递参数给函数 参数的改变问题
- 关于a标签中js函数function(va1,va2)方法传递中文参数报错不执行的问题解答
- js 函数传递参数类型问题(基本类型和引用类型)
- JS循环中使用bind函数的参数传递问题
- js循环动态绑定带参数函数遇到的问题及解决方案[转]
- 【cocos2d-x从c++到js】JS与C++的交互2——JS与C++的“函数重载”问题
- js 函数的参数 问题 arguments对象 及闭包
- js中的类型和函数参数传递类型问题
- 【cocos2d-x从c++到js】10:JS与C++的交互2——JS与C++的“函数重载”问题
- js函数参数传递,引号的问题,第二次犯错,记下来,以后不能犯了!
- 【C++提高】函数重载的参数匹配问题
- js函数参数有中文不能触发事件问题
- 【cocos2d-x从c++到js】10:JS与C++的交互2——JS与C++的“函数重载”问题
- js 函数参数个数问题
- js中方法重载如何实现?以及函数的参数问题
- JS一起学01:css复习、js基础知识、事件、参数、函数、网页换肤、if判断、className问题、浏览器执行顺序
- js循环动态绑定带参数函数遇到的问题及解决方案[转]