javascript 作用域详解
mr00ff

作用域 和 作用域链(链式作用域)

全局作用域

  1. 直接编写在script标签中的JS代码,都在全局作用域。
  2. 全局作用域在页面打开时创建,页面关闭时销毁。
  3. 全局作用域中只有一个全局对象window。他代表的是一个浏览器窗口,它由浏览器创建我们可以直接使用
  4. 在全局作用域中:
    1. 创建变量都会作为 window对象的属性保存
    2. 创建的函数都会作为window 对象的方法保存

函数作用域

  1. 调用函数时创建函数作用域,函数执行完毕以后,函数作用域销毁。
  2. 每调用一次会创建一个新的函数作用域,他们之间是相互独立的
  3. 在函数作用域中可以访问到全局作用域的变量
  4. 当在函数作用域操作一个变量时:
    1. 他会首先在自身作用域中寻找,如果有就直接使用
    2. 没有就向上一级作用域中寻找,直到找到全局作用域
    3. 如果全局作用域中依然没有找到,就会报错ReferenceError

块作用域

  1. {}界定的代码区域,let声明的变量具备可访问块作用域
  2. 允许块级作用域{}的任意嵌套

示例:

1
2
3
4
5
{
let name = "xx";
console.log(name); // xx
}
console.log(name); // ReferenceError

参考博文:

作用域(全局、函数、块作用域)作用域链

  • 本文标题:javascript 作用域详解
  • 本文作者:mr00ff
  • 创建时间:2021-06-18 17:48:22
  • 本文链接:https://www.sysxo.com/javascript/JavaScript-作用域.html
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论