js函数执行顺序
一.只有一个script
<script> a3();//先弹出 function a4(){ alert('4'); } function a3(){ alert('3'); } a4(); </script>
当一个script的时候,一开始js会先扫描整个script,将所有定义的function和变量挂到window下,然后顺序开始执行里面的代码
<script> $(function(){ a1();//弹出 function a1(){ alert('1'); } }); a1();//ReferenceError: a1 is not defined a2();//上面报错,未弹出 function a2(){ alert('2'); } </script>
$(function(){})中的functon外部是不可以引用的,且其外部的函数先执行
<script> $(function(){ a1();//弹出 function a1(){ alert('1'); } }); a2();//先弹出 function a2(){ alert('2'); } </script>
二.多个script
<script>
function a3(){
alert('3');
}
a2();//未弹出,因为此时未定义
</script>
<script>
$(function(){
a1();//弹出
function a1(){
alert('1');
}
});
a3();//先弹出
function a2(){
alert('2');
}
</script>
当存在多个script的时候,js会依次扫描script,每扫描完一个就依次执行其中的代码,所以就会出现第一个script中的a2()提示未定义,因为此时js只把第一个script扫描了,第二个script还没扫描,系统还不知道有a2存在
<script> $(function(){ a4(); function a4(){ alert('4'); } }); function a3(){ alert('3'); } a3(); </script> <script> $(function(){ a1(); function a1(){ alert('1'); } }); a2(); function a2(){ alert('2'); } </script>
执行顺序:a3()-->a2()-->a4()-->a1()
首先js扫描第一个script扫到了a3,然后执行他,然后扫描第二个script然后扫到了a2并执行了他,当页面加载完后开始按次序执行$(function(){})中的代码,a4在前先执行

浙公网安备 33010602011771号