码迷,mamicode.com
首页 > Web开发 > 详细

Js里重载问题

时间:2018-08-20 17:18:26      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:列表   递归   参数   cal   创建   argument   nbsp   函数   ++   

JS里是否存在重载?

  我们知道JS和Java很像,Java是有重载的,那么JS里有吗?

  答案是没有的

  重载就是函数(方法)名一样,参数列表不同,同命不同参称之为重载

  在js里如果有同命不同参的函数,则后写的函数覆盖前面的函数(html从上到下解析顺序),也就是多个同名函数,只有一个最后一个起作用。

模拟重载 

  js里虽然没有重载,但是我们可以模拟重载

说明  

  模拟重载需要用到arguments

  argument是类数组对象

属性

  length  获取arguments对象的长度

  callee  引用当前正在执行的函数

特性

  arguments和function是分不开的,因为arguments不能显示创建

  arguments对象只有函数开始时才能使用

 

arguments写在方法内部,可以获取传给当前方法的N个参数,可以把它想象成一个数组,我们也可以取某个下标的元素单独操作

案例1:累加

  

<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>

案例2:递归

  <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>

  

Js里重载问题

标签:列表   递归   参数   cal   创建   argument   nbsp   函数   ++   

原文地址:https://www.cnblogs.com/breezezqf/p/9506560.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!