共计 528 个字符,预计需要花费 2 分钟才能阅读完成。
了解作用域
引擎:负责 JavaScript 程序的编译及执行过程
编译器:负责语法分析及代码生成
作用域 :负责收集并保护所有申明的标识符
作用域的嵌套:一个块或者函数嵌套在另一个块级作用域中时,就产生了块级作用域的嵌套。因而在以后作用域中无奈找到某个变量时,引擎就会在外层的作用域查找,直到找到该变量或者到达最外层作用域(全局作用域)为止。
var value=1;
function bar1(){
var value=2;
function foo1(){console.log(value);
}
foo1();}
bar1();//2
词法作用域: 一个变量和函数的词法作用域取决于该变量或函数申明的中央,写在哪词法作用域就在该块作用域。
var value=1;
function foo2(){console.log(value);
}
function bar2(){
let value=2;
foo2();}
bar2();//1
为什么两者的后果不同呢?
这是因为 JS 采纳的是词法作用域,及变量或函数的作用域是由申明时地位决定的。对于 foo1,它的作用域是 bar1 所以后果为 2,对于 foo2, 它在申明时作用域是在 window 中,所以查找时 foo2 外部没有 value, 向外查找 window 中 value
正文完
发表至: javascript
2020-08-07