位置: 编程技术 - 正文

谈一谈js中的执行环境及作用域(谈一谈js中的执行者是谁)

编辑:rootadmin

推荐整理分享谈一谈js中的执行环境及作用域(谈一谈js中的执行者是谁),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:详细说明js的执行过程,js的执行机制面试题,js执行器,谈一谈js中的执行者是谁,js的执行,js 执行函数,js的执行,谈一谈js中的执行者是谁,内容如对您有帮助,希望把文章链接给更多的朋友!

最近在面试时被问到了对作用域链的理解,感觉当时回答的不是很好,今天就来说说js中的作用域链吧。

首先来说说js中的执行环境,所谓执行环境(有时也称环境)它是JavaScript中最为重要的一个概念。执行环境定义了变量或函数有权访问的其他数据 ,决定了它们各自的行为。而每个执行环境都有一个与之相关的变量对象,环境中定义的所有变量和函数都保存在这个对象中。

理解了执行环境,现在就看看什么是作用域链吧。每个函数都有自己的执行环境,当代码在执行环境中执行时,就会创建变量对象的作用域链。作用域链保证了对执行环境有权访问所有变量和函数的有序访问。作用域链的前端,始终都是当前执行的代码所在的环境的变量对象,如果环境是一个函数,那么它的变量对象就是该函数的活动对象。作用域链的下一个变量对象来自包含(外部)环境,再下一个变量对象来自下一个包含环境。这样一直延续到全局执行环境,记住,全局执行环境的变量对象永远是作用域中的最后一个对象。

请看下面的例子:

在这个例子中,函数foo()的作用域链包含了两个对象,一个是它自身对象,另一个是全局环境中的变量对象。因为我们可以在这个作用域链中找的scope,所以可以在函数内部里访问到它。

谈一谈js中的执行环境及作用域(谈一谈js中的执行者是谁)

在看一个例子:

在这个例子中,有三个执行环境:全局环境、changeColor()的局部环境和swapColor()局部环境。我们来看看这个例子的作用域链是怎样的吧。

图中的矩形表示特定的执行环境。我们可以看到变量tempColor只能在swapColor()环境中访问到,而在changeColor()的局部环境还是全局环境中都无法访问到它。因此我们可以得到一个结论:内部的环境可以通过作用域链访问所有的外部环境,但外部的环境无法访问内部的环境中的任何变量和函数。每个环境都可以向上搜索作用域链,以查询变量和函数名;但是任何环境都不能通过向下搜索作用域而进入另一个执行环境。

作用域中我还想说说的是:js没有块级作用域

为什么说js没有块级作用域呢?我们来看下面的代码:

咦,为什么color在if语句执行完毕后被销毁呢?哈哈,如果在C、C++或Java中,color确实会被销毁,但在JavaScript中,if语句中的变量声明会将变量添加到当前的执行环境中(在这里是全局环境)中。特别地,在for语句时要牢记这一差异,例如:

记住:在JavaScript中,由for语句创建的变量i即使在for循环执行结束之后,也依然会存在于循环外部的执行环境中。

标签: 谈一谈js中的执行者是谁

本文链接地址:https://www.jiuchutong.com/biancheng/375911.html 转载请保留说明!

上一篇:js实现(全选)多选按钮的方法【附实例】(js选择框全选)

下一篇:js中数组结合字符串实现查找(屏蔽广告判断url等)(js数组拼接字符串)

  • 不动产租赁需要预缴增值税吗
  • 应付职工薪酬在资产负债表怎么填
  • 结转折旧费用是自动结转的吗
  • 服务发票是增值税发票吗
  • 管理费用当月可以有余额吗
  • 公司所得税费用怎么算报多少钱
  • 管理费用期末有余额么
  • 劳务费达到多少钱需要招标
  • 技术服务公司可以卖材料吗
  • 会计科目的设置
  • 个人股权转让协议书范本合同
  • 房地产契税新政策2021退税
  • 旧机动车交易需要哪些法定证件
  • 固定资产抵扣多少年
  • 技术服务费可以计入研发费用吗
  • 未取得正式发票怎么整改
  • 三证合一后有效期多久
  • 烟草消费税计算方法
  • 个人所得税深圳税务
  • 进项税的现金流怎么填
  • 会计核算中利润包括哪些
  • 车船税在哪个科目下
  • fast processing
  • 在建工程完工后转入哪里
  • 纳税调整增加额怎么做会计分录
  • 无形资产使用寿命的复核
  • 所有者权益变动表范本
  • 包装费 增值税
  • 100多年前程序员
  • 取得抵债资产支付的税费一般不包括下列哪种
  • Joe是一款优雅功能强大的Typecho主题功能多上手快
  • 劳务派遣申报表附表一怎么填
  • 代缴社保零申报对个人有影响吗
  • 资产负债表上应付账款根据什么填制
  • 计提的费用收到增值税专票
  • 进口货物减免税政策
  • 生产企业出口转内销增值税申报表怎么填
  • 增值税发票认证期限最新规定
  • SQL查询数据库中表的某一列
  • sql server基本知识
  • 费用可以抵扣什么税
  • 一般纳税人发生应税销售行为向购买方收取
  • 城镇土地使用税征收标准及计算方法
  • 产品质量监督检查的重点是
  • 付款退回在现金里怎么查
  • 最新的会计规定出台时间
  • 上年的原材料发票可以算今年的成本吗
  • 成本不够如何计算出来
  • 开具红字增值税专用发票信息表需要盖章吗
  • 筹建期的财务费怎么算
  • 营业账簿如何缴纳税款
  • 其他业务收入如何填写增值税申报表
  • 财政拨付注册资金怎么填
  • 租房买的中央空调怎么用
  • 合法有效的凭证是什么
  • 旅游饮食服务业会计课后答案
  • mysql 随机io
  • mysql数据库遇到的故障及分析
  • mysql存储过程判断输入判断类型
  • windows2008关闭ie增强
  • centos 安装方法
  • centos6.2安装教程
  • 系统安装驱动卡住了
  • ubuntu能玩什么
  • Ubuntu系统安装软件
  • windows10更新出错
  • wysafe.exe是什么
  • win8.1 ie浏览器
  • unity加密解决方案
  • cocos creator 资源加密
  • 骨骼动画程序设计
  • javascript中的继承
  • linux监控cpu使用率脚本
  • node.js下载安装教程
  • unityui动画
  • android获取本机ip地址
  • 残疾人就业保障金什么时候申报缴纳
  • 商业发票发票号怎么填写
  • 河北省国家税务局长简介
  • 河北个体户个人缴税标准
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设