javascript基础进阶_深入剖析执行环境及作用域链

发布时间 - 2026-01-11 03:06:21    点击率:

执行环境

执行环境定义了变量或函数有权访问的其他函数,决定了他们各自的行为。每个执行环境都有一个与之关联的变量对象。

变量对象

环境中定义的所有变量和函数都保存在这个对象中。

全局执行环境

全局执行环境是最外围的一个执行环境。在web浏览器中,全局执行环境被认为是Window对象,因此所有全局变量和函数都是作为window对象的属性和方法创建的。

每个函数都有自己的执行环境。

作用域链

当代码在一个环境中执行,会创建变量对象的一个作用域链。

用途:保证对执行环境有权访问的所有变量和函数有序访问。

特点:作用域链的前端始终是当前执行的代码所在的环境的变量对象。如果这个环境是函数,则将其活动对象作为变量对象。活动对象最开始只包含arguments对象。作用域的下一个变量对象来自包含环境,而再下个来自下一个包含环境。

var color ="blue";
function changeColor() {
 
 var anotherColor ="red";
 
 function swapColors() {
  var tempColor = anotherColor;
  anotherColor = color;
  color = tempColor;
 }

 swapColors();
}

changeColor();

如图表示执行环境,内部环境可以通过作用域链访问外部环境,但是外部环境不能访问内部环境中的变量和函数。每个环境都可以向上搜索作用域链,以查询变量和函数;但是不能向下搜索。

没有块级作用域 声明变量

使用var声明的变量会自动添加到最接近的环境中。如果省略var关键字,即会添加到全局环境中。

function add(num1,num2) {

 var sum = num1+num2;

 return sum;

}

var result= add(10,10)

console.log(sum)


sum is not defined

function add(num1,num2) {

 sum = num1+num2;

 return sum;

}

var result= add(10,10)

console.log(sum)


查询标识符

搜索过程从作用域链的前端开始,向上逐级查询与给定名字匹配的标识符,找到即终止搜索。即如果局部环境中存在着同名标识符,就不会使用位于父环境中的标志符。

var color ="red";

function getColor() {



 return color;

}



console.log(getColor())


var color ="red";

function getColor() {

 var color="green";

 return color;

}



console.log(getColor())


参考:《javascript高级程序设计(第三版)》

以上这篇javascript基础进阶_深入剖析执行环境及作用域链就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# 执行环境和作用域链  # JavaScript进阶(二)词法作用域与作用域链实例分析  # 深入理解JavaScript 中的匿名函数((function() {})();)与变量的作用域  # JavaScript进阶知识点作用域详解  # 都有  # 给大家  # 外部环境  # 自己的  # 都是  # 进阶  # 在这个  # 就不  # 可以通过  # 希望能  # 如图  # 与之  # 这篇  # 小编  # 程序设计  # 大家多多  # 则将  # 第三版  # 象中  # 即会 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何自定义错误页面(404, 500)?(代码示例)  如何用花生壳三步快速搭建专属网站?  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  北京专业网站制作设计师招聘,北京白云观官方网站?  Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  潮流网站制作头像软件下载,适合母子的网名有哪些?  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  香港服务器网站卡顿?如何解决网络延迟与负载问题?  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程  详解Android——蓝牙技术 带你实现终端间数据传输  Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制  Laravel怎么在Controller之外的地方验证数据  如何挑选最适合建站的高性能VPS主机?  制作电商网页,电商供应链怎么做?  如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体  独立制作一个网站多少钱,建立网站需要花多少钱?  昵图网官方站入口 昵图网素材图库官网入口  如何在IIS7中新建站点?详细步骤解析  如何用已有域名快速搭建网站?  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧  如何打造高效商业网站?建站目的决定转化率  googleplay官方入口在哪里_Google Play官方商店快速入口指南  Laravel如何为API编写文档_Laravel API文档生成与维护方法  Laravel如何实现多对多模型关联?(Eloquent教程)  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环  如何在IIS中新建站点并解决端口绑定冲突?  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  jquery插件bootstrapValidator表单验证详解  中山网站推广排名,中山信息港登录入口?  C++用Dijkstra(迪杰斯特拉)算法求最短路径  lovemo网页版地址 lovemo官网手机登录  如何获取上海专业网站定制建站电话?  如何在云服务器上快速搭建个人网站?  音响网站制作视频教程,隆霸音响官方网站?  利用python获取某年中每个月的第一天和最后一天  常州企业网站制作公司,全国继续教育网怎么登录?  如何在万网主机上快速搭建网站?  如何利用DOS批处理实现定时关机操作详解  香港服务器网站推广:SEO优化与外贸独立站搭建策略  Laravel模型关联查询教程_Laravel Eloquent一对多关联写法  微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】  浅谈Javascript中的Label语句  Python制作简易注册登录系统  微信推文制作网站有哪些,怎么做微信推文,急?