作用域及作用域链

简介: 作用域及作用域链

作用域是什么?

作用域就是变量与函数的可访问范围


作用域链又是什么呢?


讲作用域链之前,我们首先要讲一下变量是怎么查找的。


var name = 'window.name';
function foo(){
  var name = 'foo.name';
  console.log(name);
}
function bar(){
  console.log(name);
}
foo(); // foo.name
bar(); // window.name复制代码


变量查找的时候,会先从当前执行上下文中查找该变量,如果未找到,就会去父级执行上下文中查找,直到全局执行上下文(如果对于执行上下文不理解,可以看我之前的一篇文章《执行上下文和执行栈》),而变量这种查找的规则就形成了作用域链


但是需要注意的是,我之前的文章讲过


执行上下文的创建阶段:确定this及作用域链,声明函数并初始化,声明变量并赋予默认值undefined,创建arguments对象


接下来看一个例子:


let name = 'window.name';
function foo(){
  console.log(name);
}
function bar(){
  let name = 'bar.name';
  foo();
}
bar(); // window.name
复制代码


所以写代码的时候不要被自己绕晕了


如果有错误或者不严谨的地方,请给予指正,十分感谢!

相关文章
|
4月前
|
JavaScript 前端开发
作用域链的理解
作用域链的理解
33 0
|
2月前
|
自然语言处理 JavaScript 前端开发
深入理解作用域、作用域链和闭包
在 JavaScript 中,作用域是指变量在代码中可访问的范围。理解 JavaScript 的作用域和作用域链对于编写高质量的代码至关重要。本文将详细介绍 JavaScript 中的词法作用域、作用域链和闭包的概念,并探讨它们在实际开发中的应用场景。
|
4月前
|
自然语言处理 JavaScript 前端开发
对作用域链的理解
对作用域链的理解
32 0
|
10月前
|
Linux 网络架构
暂时性死区以及函数作用域
暂时性死区以及函数作用域
107 0
|
设计模式 自然语言处理 JavaScript
一篇文章帮你真正理解javascsript作用域闭包
一篇文章帮你真正理解javascsript作用域闭包
59 0
|
消息中间件 存储 自然语言处理
兄台: 作用域、执行上下文了解一下
• 作用域(Scopes) • 词法环境(Lexical environments) • 作用域链 • 执行上下文 • 调用栈
|
自然语言处理 JavaScript 前端开发
作用域是什么
作用域是什么
81 0
|
自然语言处理 前端开发 JavaScript
作用域闭包
作用域闭包
58 0
|
存储 缓存 JavaScript
深入理解作用域和闭包(下)
深入理解作用域和闭包(下)
深入理解作用域和闭包(下)
|
存储 JavaScript 前端开发
深入理解作用域和闭包(上)
深入理解作用域和闭包(上)
深入理解作用域和闭包(上)