Js里重载问题

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>

  

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

时间: 2024-07-31 10:53:22

Js里重载问题的相关文章

在js里UTF-8与GB2312的互转

js的函数如下: function GB2312UTF8() { this.Dig2Dec = function(s) { var retV = 0; if (s.length == 4) { for (var i = 0; i < 4; i++) { retV += eval(s.charAt(i)) * Math.pow(2, 3 - i); } return retV; } return - 1; } this.Hex2Utf8 = function(s) { var retS = "

谈谈JS里的{ }大括号和[ ]中括号的用法

谈谈JS里的{ }大括号和[ ]中括号的用法,理解后就可以看懂JSON结构了. 一.{ } 大括号,表示定义一个对象,大部分情况下要有成对的属性和值,或是函数. 如:var LangShen = {"Name":"Langshen","AGE":"28"}; 上面声明了一个名为"LangShen"的对象,多个属性或函数用,(逗号)隔开,因为是对象的属性, 所以访问时,应该用.(点)来层层访问:LangShe

js里各浏览器解析XML,支持IE、火狐、Chrome等

js在chrome中加载XML,js加载XML支持ff,IE6+,Opera等浏览器 见代码: <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>js里各浏览器解析XML,支持IE.火狐.Chrome等</title> </head> <body> <script> fu

Augular JS里的各种ng

Augular JS里的各种ng- 正文: 1.ng-disabled="一种状态:该状态下不可用"例如: %button.btn.btn-2(ng-disabled="!activity_name")创建 //"activity_name"是一个可判断的值,当其值为true时,按钮可正常显示;flase时,按钮为灰色不可点 2.ng-tap="一个函数:点击时触发" %button.btn.btn-2( ng-tap=&qu

JS里设定延时:js中SetInterval与setTimeout用法

js中SetInterval与setTimeout用法 JS里设定延时: 使用SetInterval和设定延时函数setTimeout 很类似.setTimeout 运用在延迟一段时间,再进行某项操作. setTimeout("function",time) 设置一个超时对象 setInterval("function",time) 设置一个超时对象 SetInterval为自动重复,setTimeout不会重复. clearTimeout(对象) 清除已设置的se

js获取html元素? js里&quot;==&quot;和&quot;===&quot;区别?

现在的我的cpu又添加一项进程,那就是javaScript. 一.js获取html元素常用的方法: js获取html元素常用的方法有: 1)var obj = document.getElementById("#id");非常常用是通过Id来获取页面元素的. 2) var obj = document.getElementsByTagName("element");这个是通过html页面标签来获取元素的.在一个页面中相同的标签会出现很多次,如何能定位到自己想要的呢?

理解 Node.js 里的 process.nextTick()

有很多人对Node.js里process.nextTick()的用法感到不理解,下面我们就来看一下process.nextTick()到底是什么,该如何使用. Node.js是单线程的,除了系统IO之外,在它的事件轮询过程中,同一时间只会处理一个事件.你可以把事件轮询想象成一个大的队列,在每个时间点上,系统只会处理一个事件.即使你的电脑有多个CPU核心,你也无法同时并行的处理多个事件.但也就是这种特性使得node.js适合处理I/O型的应用,不适合那种CPU运算型的应用.在每个I/O型的应用中,

怎么在html页面和js里判断是否是IE浏览器

HTML里: HTML代码中,在编写网页代码时,各种浏览器的兼容性是个必须考虑的问题,有些时候无法找到适合所有浏览器的写法,就只能写根据浏览器种类区别的代码,这时就要用到判断代码了.在HTML代码中,区别各种浏览器的代码如下,以ie6为例 <!--[if IE 6]>仅IE6可识别<![endif]--> <!--[if lte IE 6]> IE6及其以下版本可识别<![endif]--> <!--[if lt IE 6]> IE6以下版本可识

JS里写入(混写)php&nbsp;asp

原文:JS里写入(混写)php asp JS里写入(混写)php 方法1:<Br> <script language="javascript"> document.write("<?php echo "阳光谢谢你"?>"); </script> <Br> <Br> 方法2<Br> <script language="javascript"