浅谈变量作用域

很多时候大家对作用域不太清楚,尤其是刚学没多久的小码农,我也是自己了解一点,所以放出来,方便自己以后复习

先看下边这段代码

      // var 全局声明   let  const 局部声明。

        for (let i = 0; i < 5; i++) {
                function x() {
                        console.log('局部变量————' + i)//0 1 2 3 4
                }
                x()
        }
        //如果是i 就是局部声明,
        console.log('局部变量————window' + window.i) //如果是let 或则const 全局中你是拿不到这个变量的但是如果是var的话,看例子 打印//undefined


        for (var o = 0; o < 5; o++) {
              
                        console.log('全局变量————' + o)// 0 1 2 3 4
                        //因为是在这个循环体内,变量是不能等于或者大于5
                        //但是你能在全局中找到这个o
           
        }
        console.log('全局变量————window' + window.o)//5

首先你要知道如果你是var 声明的变量,并且没有在函数内部声明的,那么他就是全局变量,就会挂载到window上,

如果你是let 或则const声明的变量 他是有他自己的作用域的,简单来说,就在一个{}内。

好简单了解,全局和局部之后,在来看一下这几个循环。

第一个循环因为是let声明的变量,并不会挂载到window上,所以打印1234

你打印window.i是undefined

第二个循环呢,是用var来声明的变量,然后 打印o  在循环内,是输出01234  因为你的循环自己带了判断条件,o是小于5的

所以o==4的时候o还是会++ 但是o不会输出到你的console里,因为你限制了o只能小于5

人看下边这段,你打印window上的o 是可以看到o已经变成5 但是并没有输出,

如果有不对的地方欢迎指出

posted @ 2020-05-19 10:03  遇见_明天  阅读(169)  评论(0)    收藏  举报