作用域是由下至上的
最下方是全局作用域
向上是函数作用域、块作用域
作用域是用来保管所有变量(非字符)的仓库管理员
当引擎遇到任何一个变量时都将询问当前作用域,是否存在该变量,如果
不存在,将向下寻找知道找到/找不到。
小细节:
for循环中 for(var i=1;i<4;i++) 中的i 不属于for循环作用域,而是属于上一个作用域(函数或者全局)中,使用var 会污染作用域,于是应该使用let 使其工作于当前作用域。
upupup!!!
函数声明时对编译器来说是分为几个段落的:
如var i=1;
其实是分成:
var i;
i=1;
在JavaScript中所有的声明都将自动浮动到最顶代码行。
即便是:
console.log(i);
var i = 1;
也将变成:
var i ;
console.log(i);
i=1;