浅谈变量作用域
很多时候大家对作用域不太清楚,尤其是刚学没多久的小码农,我也是自己了解一点,所以放出来,方便自己以后复习
先看下边这段代码
// 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 但是并没有输出,
如果有不对的地方欢迎指出

浙公网安备 33010602011771号