总结javascript中的全局变量和局部变量的区别以及声明函数和调用函数的区别


<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="utf-8"/>
    <title></title>
    <script src="../js/jquery-1.10.2.js"></script>
    <script>
//        1 i为全局变量 输出全局变量
        function myName() {
            i = '全局变量';
        }
        myName();
        function sayName() {
            alert(i);
        }
        sayName();

//        2 i为局部变量 运行出错 显示i未定义
        function myName() {
            var i='局部变量';
        }
        myName();
        function sayName() {
            alert(i);
        }
        sayName();

//        3 将1中的myName()去掉 运行出错 显示i未定义,虽然声明了函数,但是没有调用函数,函数中的i的赋值失效。
        function myName() {
            i = '全局变量';
        }
        function sayName() {
            alert(i);
        }
        sayName();

//        4 将1中的myName()放到sayName()的下面 运行出错 显示i未定义,虽然声明了函数 调用了函数 但是因为javascript调用的函数自上而下运行,
//          当运行sayName时并没有运行myName().
        function myName() {
            i = '全局变量';
        }
        function sayName() {
            alert(i);
        }
        sayName();
        myName();

//        5 运行结果显示是全局变量。虽然变量名称相同,但是一个是全局变量,一个是局部变量,有着本质的区别,局部变量只能在本函数之内使用
        var i = '全局变量';
        function myName() {
            var i = '局部变量';
        }
        myName();
        function sayName() {
            alert(i);
        }
        sayName();

//        6 将5的局部变量改成全局变量,运行结果显示改变的全局变量
        var i = '全局变量';
        function myName() {
            i = '改变的全局变量';
        }
        myName();
        function sayName() {
            alert(i);
        }
        sayName();

//        7 运行结果显示undefined,因为代码的执行顺序是从上到下的,在输出i之前并只定义了i,没有对i初始化。
        var i;
        function sayName() {
            alert(i);
            i = '全局变量';
        }
        sayName();

//        8 运行结果显示全局变量,在输出之前初始化i就没有问题了
        var i;
        function sayName() {
            i = '全局变量';
            alert(i);
        }
        sayName();
//        9运行结果显示undefined,因为输出的是局部变量,而局部变量得初始化在输出之后。
        var i = '全局变量';
        function sayName() {
            alert(i);
            var i = '局部变量';
        }
        sayName();
    </script>
</head>
<body>

</body>
</html>

 

 

 

posted on 2016-12-02 10:52  iwebkit  阅读(4627)  评论(0编辑  收藏  举报

导航