论坛首页 Web前端技术论坛

Javascript 没有重载的理解

浏览 4378 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-10-31  
在 Javascript 中,是没有重载的概念的。我们可以通过将函数名想像为指针的方法对其加以深入的理解(很好理解)。

下面的一个例子可以让大家很容易的明白 Javascript 中无重载的概念。

function addNum(s1){
		return 100+s1;
	   }
			
	   function addNum(s2){
		return 200+s2;
	   }
			
	   alert(addNum(1)); // 输出 201,实际上第二个函数覆盖了第一个函数。


看下面的变量声明函数法对上述概念的理解:

var addNum = function(s1){
		return 100+s1;
	   };
			
	   addNum = function(s1){
		return 200+s1;
	   };
			
	   alert(addNum(1)); // 输出 201,实际上第二个函数覆盖了第一个函数。


对于变量的声明,实际上此处的 addNum 是对 Function 对象的一个引用,可以想象成指针,变量声明了两次,实际上第二次的声明切断了函数第一次的引用而指向了另外一个对象。

在这里,我们可以把每个函数都看做是 Function 类型的实例。由于这里的函数是对象,则函数名实际上是指向函数对象的指针,而并不会与某个具体的函数绑定。
   发表时间:2011-11-01  
functon addNum(s1){
   return 100+s1;
}
function addNum(s1,s2){
   return 100+s1;
}
alert(addnum(1));

楼主,你再试试看,有没有重载。
0 请登录后投票
   发表时间:2011-11-01  
timren1002 写道
functon addNum(s1){
   return 100+s1;
}
function addNum(s1,s2){
   return 100+s1;
}
alert(addnum(1));

楼主,你再试试看,有没有重载。



functon ??? 


addnum ????     
0 请登录后投票
   发表时间:2011-11-01  
timren1002 写道
functon addNum(s1){
   return 100+s1;
}
function addNum(s1,s2){
   return 100+s1;
}
alert(addnum(1));

楼主,你再试试看,有没有重载。

 

  • 大小: 18.8 KB
0 请登录后投票
   发表时间:2011-11-05  
timren1002 写道
functon addNum(s1){
   return 100+s1;
}
function addNum(s1,s2){
   return 100+s1;
}
alert(addnum(1));

楼主,你再试试看,有没有重载。


我是了还是没有重载啊,你这里两个地方都是 return 100+s1;输出的 101 也不知道是那个地方输出的,请把下面的 addNum改成 200+s1 试试吧。你看看是输出201还是101。

function addNum(s1){ 
   	return 100+s1; 
} 
function addNum(s1,s2){ 
   	return 200+s1; 
} 
	alert(addNum(1)); //这里输出的是201


另外 你的程序有少许手写错误,建议细心。

0 请登录后投票
   发表时间:2011-11-06  
js里面本来就没有设计到重载
重载是因为调用函数不仅仅用了函数名 而且也附带了参数的信息
0 请登录后投票
   发表时间:2011-11-06  
方法表,类似于哈希表 那样的 当然不可能重载了,
0 请登录后投票
   发表时间:2011-11-07  
functon addNum(s1){}
等同于

var addNum = new Function(...);
0 请登录后投票
   发表时间:2011-11-07  
rainsilence 写道
functon addNum(s1){}
等同于

var addNum = new Function(...);



不完全等同。
functon addNum(s1){}
定义会在编译时自动提前。
0 请登录后投票
   发表时间:2011-11-08  
动态语言,那里有这种性能,那都是静态语言的特征

js 函数内部都有一个叫argumenets 的数组,不管你函数传进多少参数都可以,定义只是function f(){}这种就可以了!!!
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics