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制作简易注册登录系统
微信推文制作网站有哪些,怎么做微信推文,急?

