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在前先执行

 

posted @ 2016-12-23 10:53  暗夜心慌方  阅读(2977)  评论(0)    收藏  举报