• 【Python全栈-JavaScript】JavaScript变量的作用域


    JavaScript变量的作用域全局变量

    1.当在script中定义变量,在当前script中的定义前调用是undefined,没有定义该变量时调用报错。原因是在内存中开辟了该变量的存储位置,(当执行script时将所有定义的变量名先存到栈中)

    当代码解释到该语句时才会将值存在栈中,没有执行之前调用该变量就是undefined,如果没有定义就不会在内存中开辟存储位置,因此就会报错。

    2.如果在上一个script中调用下面的script的变量时,这时候不但没有值,而且没有开辟存储空间。因此,在上一个script中调用下面的变量永远都是报错的。

    3.一旦定义变量完成后,在后面的script中都是可以任意调用,因为这些变量都是全局变量。

    <script>
        console.log(xx);    //在另一个script中调用,而且调用后面的定义变量内容 会报错
    </script>
    <script>
        console.log(xx);    //undefined  xx变量名存在栈中,但还没有赋值
        var xx = 1;
        console.log(xx);    //xx是全局变量后面可以正常调用
    </script>
    <script>
        console.log(xx);    //xx=1  可以调用到
    </script>

    全局变量VS 局部变量

    /*全局变量  就是在script标签下直接使用var定义的变量,
                    全局变量可以应用于所有的代码中调用获取.范围非常大
          局部变量 就是在函数中使用var定义的变量,仅用于当前函数的执行范围内
    
                    低耦合(减少耦合度)*/
    
        function fn1() {
            // 这里使用var定义的变量是有作用域的,他的范围仅限于该函数内部
            // 函数运行完成后,函数内定义的变量将会自动销毁
            var c=10;   //局部变量
            c+=3;
            console.log(c);
            //函数中修改全局变量后,全局变量就完成了修改,外面调用时,也是修改后的
            xx+=10;
        }
        fn1();      //xx=11
        fn1();      //xx=21
        console.log(xx,"______");   //21

    全局变量和局部变量的重名

    //全局变量和局部变量的重名
        var s1=10;
        function fn2() {
            /*
            (局部变量和全局变量重名,在函数中局部会覆盖全局)
            *  如果在函数中定义了某个局部变量名,那么在该函数中所有这个变量都是局部变量
            *  不能通过直接使用变量名的方法调用到外部的全局变量了
            * */
            var s1=20;
            s1+=20;     //40
            window.s1+=10;  //如果全局变量的名称在函数中和局部变量名相同,想要调用全局变量时,加上window前缀
            console.log('全局变量s1--->',window['s1']);     //全局变量也可以这样调用
            console.log(s1);    //局部变量 40
        }
    
        fn2();
        console.log(s1);    //全局变量s1  10
    
        var s2=10;
        function fn3() {
            //console.log(s2);//undefined,因为在函数中一旦第一局部变量,该函数中所有位置都是局部变量
            s2+=10;
            console.log(s2);//NaN,undefined+10
            var s2=20;
        }
        fn3();
  • 相关阅读:
    神墓
    【转】卷积神经网络
    【转】Deep Learning(深度学习)学习笔记整理系列之(八)
    【转】Deep Learning(深度学习)学习笔记整理系列之(七)
    【转】Deep Learning(深度学习)学习笔记整理系列之(六)
    【转】Deep Learning(深度学习)学习笔记整理系列之(五)
    【转】Deep Learning(深度学习)学习笔记整理系列之(四)
    【转】Deep Learning(深度学习)学习笔记整理系列之(三)
    【转】Deep Learning(深度学习)学习笔记整理系列之(二)
    mariadb connector bug
  • 原文地址:https://www.cnblogs.com/XJT2018/p/11051159.html
Copyright © 2020-2023  润新知