Python全栈-JavaScriptJavaScript变量的作用域

Posted xjt2018

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python全栈-JavaScriptJavaScript变量的作用域相关的知识,希望对你有一定的参考价值。

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();

 

以上是关于Python全栈-JavaScriptJavaScript变量的作用域的主要内容,如果未能解决你的问题,请参考以下文章

老男孩python全栈培训怎么样

Python 全栈开发第一篇:目录

Python全栈开发

Python全栈进程线程

Python全栈考试-部分试题(精选)

Python全栈-Day07