日期:2014-05-17  浏览次数:20837 次

html文件中js代码执行顺序

大家都知道js是顺序执行的,但是如果在一个函数的定义之前调用这个函数那会是什么效果那?

下面的代码是一个列子,如果myAbc没有定义则会提示错误,如果已经定义则会正确提示。

?

<script>
try {
	myAbc();
} catch(e) {
	alert("error");
}
</script>
<script>
function myAbc() {
	alert("myAbc");
}
</script>

?在这种情况下会报错。

?

<script>
try {
	myAbc();
} catch(e) {
	alert("error");
}
function myAbc() {
	alert("another myAbc()");
}
</script>

?这种情况是可以执行的,这说明在一个script范围内定义函数会预加载,这样在调用函数的时候函数就已经存在了。

?

<script>
try {
	myAbc();
} catch(e) {
	alert("error");
}
function myAbc() {
	alert("another myAbc()");
}
</script>
<script>
function myAbc() {
	alert("myAbc");
}
</script>

?

这种情况下会提示什么那?

呵呵,another myAbc(),跟你想的不一样吧。

?

总结一下,就是各个script代码模块都是顺序执行的,每个模块的代码只能执行前面已经定义的函数和自己所在代码模块的函数,而不能调用在其后面的模块的函数。

1 楼 puppet_love 2008-06-13  
luguo
2 楼 laoliu.org 2008-06-13  
那如果在页面中调用在页尾声明的js呢
3 楼 lianyeyu 2008-06-14  
我一直没太理解js的执行顺序,类似laoliu.org所说的。
4 楼 liudaoru 2008-06-14  
在页尾声明会最后加载。

本质上说js加载是按照js在页面的出现顺序,解析引擎会解析每个javascript标签里的js脚本,将所有的代码作为js全局对象Global对象的内部代码进行执行。
5 楼 congpeixue 2008-06-15  
引用

laoliu.org 昨天
那如果在页面中调用在页尾声明的js呢


那就先调用生命处的。
6 楼 ironurbane 2008-06-16  
应该是这样
7 楼 liudaoru 2009-02-22  
聚焦到文本框,如果有文字则定位到最后:
function iFocus(sid){var B=document.getElementById(sid);if(B){if(navigator.appName=="Netscape"){B.focus()}else{B.focus();var A=B.createTextRange();A.collapse(false);A.select()}}}