JavaScript 作用域与作用域链

JavaScript 作用域与作用域链一 作用域 1 理解 就是一块 地盘 一个代码段所在的区域 它是静态的 相对于上下文对象 在编写代码时就确定了 2 分类 全局作用域 函数作用域 没有块作用域 ES6 有了 3 作用 隔离变量 不同作用域下同名变量不会有冲突 scripttype text javascript 没作用域 if true varc 3 console log c vara 10 scripttype text

一、作用域

1. 理解
  * 就是一块”地盘”, 一个代码段所在的区域
  * 它是静态的(相对于上下文对象), 在编写代码时就确定了
2. 分类
  * 全局作用域
  * 函数作用域
  * 没有块作用域(ES6有了)
3. 作用
  * 隔离变量,不同作用域下同名变量不会有冲突
















JavaScript 作用域与作用域链

二、 作用域与执行上下文

1. 区别1
  * 全局作用域之外,每个函数都会创建自己的作用域,作用域在函数定义时就已经确定了。而不是在函数调用时
  * 全局执行上下文环境是在全局作用域确定之后, js代码马上执行之前创建
  * 函数执行上下文环境是在调用函数时, 函数体代码执行之前创建
2. 区别2
  * 作用域是静态的, 只要函数定义好了就一直存在, 且不会再变化
  * 执行上下文是动态的, 调用函数时创建, 函数调用结束时上下文环境就自动释放
3. 联系
  * 执行上下文(对象)是从属于所在的作用域
  * 全局上下文环境==>全局作用域
  * 函数上下文环境==>对应的函数使用域




















三、作用域链

1. 理解
  * 多个上下级关系的作用域形成的链, 它的方向是从下向上的(从内到外)
  * 查找变量时就是沿着作用域链来查找的
2. 查找一个变量的查找规则
  * 在当前作用域下的执行上下文中查找对应的属性, 如果有直接返回, 否则进入2
  * 在上一级作用域的执行上下文中查找对应的属性, 如果有直接返回, 否则进入3
  * 再次执行2的相同操作, 直到全局作用域, 如果还找不到就抛出找不到的异常












JavaScript 作用域与作用域链

四、作用域面试题

1.面试题一

JavaScript 作用域与作用域链

 

 2.面试题二

JavaScript 作用域与作用域链

 总结

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/227191.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午9:44
下一篇 2026年3月16日 下午9:44


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号