函数全局变量、局部变量以及作用域的练习

2019-12-20  本文已影响0人  bigFish_Yu

1. 注意函数调用后会将100赋值给全局的a

     var a = 10;
     function fn() {
         a = 100;
         console.log("函数内的a:", a); //100
     }
     console.log("函数外的a:", a); //10
     fn();
     console.log("函数外的a:", a); //100

2.局部与全局的作用域区分

     var a = 10;
     function fn() {
         var a = 100;
         console.log(a); //100
     }
     fn();
     console.log(a); //10

2.1 fn()内重新声明a将函数内部的a变成了局部函数

    var a = 10;
    function fn() {
、、
        a = 100; 
        console.log(a);//100

        var a = 1332;
    }
    fn();
    console.log(a);//10

3.

    var a = 10;
    function fn(a) {
        //var a;
        console.log(a);//undefined
        a = 100;
        console.log(a);//100
    }
    fn(10);
    console.log(a);//10

4. a=100,变量提升,但是没有var也没有赋值,所以报错

    console.log(a);  //err
    a = 100;
    console.log(a);  //

    function fn() {
        a = 100;
        console.log("我是函数里的a:", a); //
    }

    fn();
    console.log("我是函数外的a:", a); //

5. a=b=10;会将b变成全局变量

    var a = b = 10;

    function fn() {
        var a = b = 20;

        console.log("函数内:", a, b); //20,20
    }

    fn();
    console.log("函数外", a, b);//10,20

6. c()里没有a,往外找一层就找到全局的a

    var a = 10;
    function fn() {
        var a = 100;
        console.log("函数内:", a);//100

        c(); //10

        // function b() {
        //     var a = 1000;
        //     c();
        // }
        // b();
    }
    function c() {
        console.log("c里面的a", a);
    }
    fn();

7.c()往外找一层,就找到局部的a=100;

    var a = 10;
    function fn() {
        var a = 100;
        console.log("函数内:", a); //100

        c();

        function c() {
            console.log("c里面的a", a); //100
        }
    }
    fn();
    console.log("函数外:", a);//10
上一篇 下一篇

猜你喜欢

热点阅读