标签:列表 递归 参数 cal 创建 argument nbsp 函数 ++
我们知道JS和Java很像,Java是有重载的,那么JS里有吗?
答案是没有的
重载就是函数(方法)名一样,参数列表不同,同命不同参称之为重载
在js里如果有同命不同参的函数,则后写的函数覆盖前面的函数(html从上到下解析顺序),也就是多个同名函数,只有一个最后一个起作用。
js里虽然没有重载,但是我们可以模拟重载
说明
模拟重载需要用到arguments
argument是类数组对象
属性
length 获取arguments对象的长度
callee 引用当前正在执行的函数
特性
arguments和function是分不开的,因为arguments不能显示创建
arguments对象只有函数开始时才能使用
arguments写在方法内部,可以获取传给当前方法的N个参数,可以把它想象成一个数组,我们也可以取某个下标的元素单独操作
<script> function add(){ var sum=0; for (var i = 0; i < arguments.length; i++) { sum+=arguments[i]; } return sum; } document.write(add(1,2,3,4,5)); //累加结果 </script>
<script> function add(x){ if(x==1){ return 1; }else{ return x+arguments.callee(x-1); //return x+add(x-1); //两行代码都行,上一行都调用了它的属性callee(调用当前执行方法) } } document.write(add(10)); </script>
标签:列表 递归 参数 cal 创建 argument nbsp 函数 ++
原文地址:https://www.cnblogs.com/breezezqf/p/9506560.html