Javascript同名函数输出值不同/相同的原因

先看下面这段代码

var eg = function(){
		alert("Web前端");
	};
	eg();
	eg = function(){
		alert("前端开发");
	}();

这里面有两个同名函数,但是输出结果不同,第一个函数输出“Web前端”,第二次输出“前端开发”。

再来看一段代码

	function eg(){
		alert("Web前端");
	};
	eg();
	function eg(){
		alert("前端开发");
	};
	eg();

这段代码里面也是两个同名函数,但是输出结果却相同。两个数据均输出“前端开发”。

这是为什么呢?原来Javascript是执行引擎并不是一行一行的分析和执行程序的,而是一段一段的分析执行的。而且在同一段中,定义式的函数语句会被优先提取出来执行,函数定义语句执行完之后,其他语句才正常执行。在这个例子中,第一次执行的eg函数定义被后面的eg函数定义给覆盖掉了,然后才是输出。所以两次输出的结构都是一样的。

第二个例子如果使用下面这种方式写,就可以输出不用的值,这也说明了Javascript确实是一段一段执行的。

<script type="text/javascript">
	function eg(){
		alert("Web前端");
	};
	eg();
</script>
<script type="text/javascript">
	function eg(){
		alert("前端开发");
	};
	eg();
</script>
原文链接:,转发请注明来源!

发表评论

  • 1 Responses to “Javascript同名函数输出值不同/相同的原因”
    • www.452470.com.cn

      博主好厉害!

      回复