我最近遇到过这个声明的许多版本:
每个函数对象都有自己的变量集,这些变量 在每个函数的范围内得到解析.
我理解范围,但是我很难找到(通过谷歌搜索)很多关于"解决"这个词在这个背景下意味着什么.
这里的解决方案是在您拥有其名称时找到变量的过程.
标识符解析是使用正在运行的执行上下文的LexicalEnvironment确定标识符绑定的过程
对于嵌套作用域,从最内部作用域开始,然后向外移动,直到找到具有名称的变量.
这是一个非常基本的例子:
var a = 1;
function fun(){
var a = 2;
console.log(a);
}
fun(); // logs 2
Run Code Online (Sandbox Code Playgroud)
这是介绍闭包的一个非常简单的例子:
var a = 1;
function make_fun(a){
return function(){
console.log(a);
}
}
var fun = make_fun(2);
fun(); // logs 2
Run Code Online (Sandbox Code Playgroud)
在f创建时,它采用外部作用域的变量(其调用make_fun构建闭包),其中包括a.
重要的是要记住JavaScript中的范围(好吧,在ES6之前)
块不会创建范围.
| 归档时间: |
|
| 查看次数: |
57 次 |
| 最近记录: |