了解JS运行机制,分析this绑定 、作用域、作用域链和闭包的形成

摘要:北京时间20191203关于【了解JS运行机制,分析this绑定 、作用域、作用域链和闭包的形成】的具体情况和说明,让www.pccec.cn新闻频道的以图文形式为您慢慢道来。

了解js的运行机制有助于我们在日常的工作中,写成高质量的代码,减少bug的产生,节约维护成本。也有助于我们通过造火箭的面试。了解JavaScript引擎。通过运行机制看作用域和作用域链。通过运行机制理解this的绑定和优先级。通过运行机制理解闭包。

二、渲染引擎 | JavaScript引擎(JavaScript Engine)

了解运行机制之前,我们先来搞清楚几个基本概念。

2.1 渲染引擎

渲染是根据描述或者定义构建一个数据模型,生成图形的过程。渲染引擎将页面资源(html、css、javaScript等)构建成可视化、可听化的多媒体结果。也就是我们看到的浏览器网页呈现。

2.2 JavaScript引擎

当我们在运行一段代码时,真正赋予这段代码生命的就是JavaScript引擎。JavaScript引擎是一个专门处理JavaScript脚本的虚拟机,一般会附带在网页浏览器中。JavaScript引擎从头到尾负责整个JavaScript程序的编译和执行过程。

2.2.1 JavaScript引擎有许多种

最为大家熟知的无疑是V8引擎,他用于Chrome浏览器和Node中。V8 — 开源,由 Google 开发,用 C ++ 编写。Rhino — 由 Mozilla 基金会管理,开源,完全用 Java 开发。SpiderMonkey — 是第一个支持 Netscape Navigator 的 JavaScript 引擎,目前正供 Firefox 使用。JavaScriptCore — 开源,以Nitro形式销售,由苹果为Safari开发。KJS — KDE 的引擎,最初由 Harri Porten 为 KDE 项目中的 Konqueror 网页浏览器开发。Chakra (JScript9) — Internet Explorer。Chakra (JavaScript) — Microsoft Edge。Nashorn, 作为 OpenJDK 的一部分,由 Oracle Java 语言和工具组编写。JerryScript —  物联网的轻量级引擎。

2.3 渲染引擎和JavaScript引擎的关系

渲染引擎通过调用接口来处理JavaScript的逻辑。JavaScript通过桥接接口来访问渲染引擎的DOM等元素。

三、JavaScript运行时(JavaScript Runtime)

如果想让一段JavaScript代码真正的运气起来,单单靠JavaScript引擎是不够的,JavaScript Engine的工作是编译并执行 JavaScript 代码,完成内存分配、垃圾回收等,但是缺乏与外部交互的能力。

比如单靠一个V8引擎是无法进行ajax请求、设置定时器、响应事件等操作的,这就需要JavaScript运行时(JavaScript Runtime)的帮助,它为 JavaScript 提供一些对象或机制,使它能够与外界交互。

比如,虽然Chrome和node都是用了V8引擎,但是他们的运行时却不同,比如process、fs浏览器都无法提供。

一段javaScript代码的运行我们可以分为两个阶段。

四、JavaScript运行的两个阶段

4.1 编译阶段分词/词法分析解析/语法分析预编译(代码生成、解释阶段)

4.2 执行阶段JavaScript并非是简单的一行一行解释执行代码,而是将JavaScript划分为一块一块的可以执行代码块进行执行。JavaScript中代码块又分为三种。

4.2.1 代码块全局可以执行代码。函数可执行代码。Eval可执行代码。

接下里我们主要说说,JavaScript的执行阶段。

五、JavaScript执行

JavaScript既是编译语言,又是解释语言。JavaScript引擎实际上在执行代码前仅几微秒就编译了代码。

称为JIT(及时编译)。它本身是一个很大的话题。但是现在,我们可以跳过编译背后的理论,而只关注执行阶段,这仍然很有趣。

JavaScript引擎,编译和解释我们的JavaScript代码。JavaScript引擎其实也包含了很多较小的部分,这些较小的部分,分工合作来保证JavaScript的运行。全局内存(Global Memory)调用堆栈(Call Stack)执行上下文等等其他组件

5.1 全局内存(Global Memory)

先看一段代码

var num = 2;

function pow(num) {

return num * num;

}

复制代码

看到这段代码,大家思考一下会发生什么。可能大家已经想到JavaScript引擎,在执行到第一行代码时就立刻讲引用放入全局内存(Global Memory)。全局内存是JavaScript引擎保存变量和什么函数的地方。当引擎读取以上代码时,全局内存将填充两个绑定:

上面的代码不会执行,接下来我们尝试执行函数。

5.2 调用栈(Call Stack)

var num = 2;

function pow(num) {

return num * num;

}

pow(num);

复制代码

当我们执行函数的时,JavaScript引擎会用到调用堆栈(Call Stack)。调用堆栈是一个堆栈类的数据结构,意味着它是先进后出的执行方式。如果是多个函数,将依次进栈,先进后出。

打开浏览器控制台,然后查看“来源”标签。您将看到一些框,其中一个更有趣的名称是Call Stack。

当代码块在执行时,JavaScript引擎会创建一个执行上下文,已作为代码运行的基础运行环境。

六、执行上下文

在"4.2.1代码块",有三种代码块,分别对应三种执行上下文全局可以执行代码 => 全局执行上下文。函数可执行代码 => 函数执行上下文。Eval可执行代码 => Eval执行上下文。

6.1 全局执行上下文

基础执行上下文,一个程序只有一个全局执行上下文,任何不在函数内部的代码都在全局执行执行上下文。全局执行上下文只要做两件事情:创建一个全局的 window 对象(浏览器的情况下)。置 this 的值等于这个全局对象。

6.2 函数执行上下文

如果我们的函数有一些嵌套变量或一个或多个内部函数怎么办?

var num = 2;

function pow(num) {

var a = 1,

b = 2,

c = 3;

function add(a, b, c) {

return a + b + c;

}

}

复制代码

每当一个函数被调用时,都会为该函数创建一个新的上下文。每个函数都有它自己的执行上下文,不过是在函数被调用时创建的。函数上下文可以有任意多个。每当一个新的执行上下文被创建。

6.3 Eval执行上下文

执行在 eval 内部的代码也会有它属于自己的执行上下文,请不要、不要、不要轻易使用它。

执行上下文也分为创建和执行阶段。在创建阶段就非常有意思了。

七、执行上下文的创建

执行上下文的创建阶段主要做了三件事:决定this的绑定。创建词法环境。创建变量环境。

7.1 this绑定

在创建可执行上下文的时候,根据代码的执行条件,来判断分别进行默认绑定、隐式绑定、显示绑定等。

7.1.1 this绑定分类普通函数的调用:this指向window(浏览器环境)。对象方法的调用:this指向调用对象。(隐式绑定)构造函数:this指向构造函数实例。apply、call、bind:this指向绑定值。(显示绑定)箭头函数this:this指向外层第一个普通函数调用的this。(默认绑定)

7.1.2 this绑定优先级

this绑定也是有优先级的,优先级规则如下:函数是否存在new绑定调用:如果是的话this绑定到新创建的对象上。函数是否通过apply、call、bind显示绑定:如果是,this绑定到指定对象上。函数是否在对象方法隐式调用:如果是的话,this绑定到调用对象。如果上面三条都不满足的话:在严格模型下,this绑定到undefined,在非严格模式下,this绑定到全局对象上。

7.2 词法环境

词法环境是JavaScript引擎内部用来跟踪标识符和特定变量之间的映射关系。词法环境是Js作用域的实现机制。如果之前了解过作用域概念的话,和词法环境是类似的(ES6之后作用域概念变为词法环境概念)。

作用域就是一个独立的地盘,让变量不会外泄、暴露出去。也就是说作用域最大的用处就是隔离变量,不同作用域下同名变量不会有冲突。 ES6 之前 JavaScript 没有块级作用域,只有全局作用域和函数作用域。ES6的到来,为我们提供了‘块级作用域’,可通过新增命令let和const来体现。

7.2.1 词法环境分类全局环境:全局环境的外部环境引用是 null,它拥有内建的对象 Object/Array/等、环境记录器内的原型函数、定义的全局变量。模块环境:模块环境的外部环境引用是全局环境(window,浏览器环境),它拥有模块顶级声明的绑定、模块显式导入的绑定。函数环境:函数环境外部引用可以是其他函数环境,也可以是全局环境。它拥有声明变量和函数。

7.2.2 词法环境组成外部环境的引用(outer Lexical Environment):指它可以访问其父级词法环境(即作用域)。环境记录器 (Environment Record):存储变量和函数声明的实际位置。(声明式环境记录器,对象式环境记录器是两个比较主要环境记录器)。

词法环境中含有外部词法环境的引用,我们可以通过这个引用获取外部词法环境的变量、声明等,这些引用串联起来一直指向全局的词法环境,因此形成了作用域链。

词法环境中含有外部词法环境的引用,我们可以通过这个引用获取外部词法环境的变量、声明等,因此形成了闭包。

7.3 变量环境

查看大量资料都没有详细的记录变量环境。

ES5标准文档中规定,执行环境包括:词法环境、变量环境、this绑定。其中执行环境的词法环境和变量环境组件始终为词法环境对象。当创建一个执行环境时,其词法环境组件和变量环境组件最初是同一个值。在该执行环境相关联的代码的执行过程中,变量环境组件永远不变,而词法环境组件有可能改变。

变量环境的不变和词法环境的可能改变都是指引用的改变,规范12.10和12.14两部分的内容提到了词法环境在with以及catch语句块中会改变。

八、JavaScript的执行过程总结

九、预览整体过程,本文只是讲了一下部分

JavaScript既是编译语言,又是解释语言。但是JavaScript本质上是一种解释型语言,与编译型语言不同的是它需要一边执行一边解析,而编译型语言在执行时已经完成编译,可直接执行,有更快的执行速度。


查看更多
日本黄大片免费播放器 黄色片 日本一级特黄大片免色 特别黄的免费大片视频 黄色大片 黄网站 黄色免费网站 黄色电影免费片日本大片,视频,电影,大片,完整版,网站,全过程

实时推荐

论文入选ESI全球TOP 1%高被引论文!为工程大王文涛副教授点赞!
推荐 黄色片 2019-12-06 14:06 238 2575
青岛住建局下达隐患整改40余条!
推荐 黄色片 2019-12-06 14:06 412 8229
智能健身器材相继亮相 新鲜好玩快来试试 ​
推荐 黄色片 2019-12-06 14:06 286 8985
好看又宜家的不仅是男神,还有瑞虎8
推荐 黄色片 2019-12-06 14:06 665 8434
云霄县彩虹公益联合会获首届全国“品质公益奖”
推荐 黄色片 2019-12-06 14:05 354 3884
12月6日至8日,去会展中心买土特产!
推荐 黄色片 2019-12-06 14:05 782 7616
我市高质量推进职业年金经办管理工作
推荐 黄色片 2019-12-06 14:05 338 7646
LOL:全明星solo赛Uzi小炮险胜对手,细节拉满用R打断W
推荐 黄色片 2019-12-06 14:05 138 519
“相约金秋后”中国画作品展在重庆开幕
推荐 黄色片 2019-12-06 14:05 849 2199
《美人鱼》女主角林允眉上齐刘海,一般人驾驭不了
推荐 黄色片 2019-12-06 14:05 582 8657
赤坎区:普法宣传进校园
推荐 黄色片 2019-12-06 14:05 833 6466
安徽省南陵县何湾市场监管所组织学习新修订的《药品管理法》
推荐 黄色片 2019-12-06 14:05 613 4901
浙江杭州西湖区:保健宣传进电梯 打造移动“宣讲团”
推荐 黄色片 2019-12-06 14:05 118 7223
它才是“穷人的阿胶”,每天吃一盘,贫血消失了,驻颜减皱,小腹平坦
推荐 黄色片 2019-12-06 14:05 268 4801
安徽庐江城北市监所开展辖区自动扶梯安全检查
推荐 黄色片 2019-12-06 14:05 518 5562
安徽省庐江县郭河市监所:严冬送法暖人心 知法守法会用法
推荐 黄色片 2019-12-06 14:05 99 9991
率真 林允 最新,复古摩登照:惊艳了!这姑娘是真美
推荐 黄色片 2019-12-06 14:05 117 9579
吴京机场发火斥责跟拍者,表情严肃太爷们!撞到孩子怎么办
推荐 黄色片 2019-12-06 14:05 709 5846
龙泉驿黄土场惊现神秘老物件,知道用途后,才发现自己见识太少
推荐 黄色片 2019-12-06 14:05 557 1434
米卢比里皮高明之处:米卢更了解中国球员,杨晨这是大实话!
推荐 黄色片 2019-12-06 14:05 498 8982
林允眉上齐刘海美炸!这一组写真大片,堪称冬日甜系女生穿搭典范
推荐 黄色片 2019-12-06 14:05 126 1400
林允眉上齐刘海
推荐 黄色片 2019-12-06 14:05 405 7217
养虫吃虫 这家天敌工厂生产“虫虫特工队”
推荐 黄色片 2019-12-06 14:05 285 4696
土耳其再次惹众怒!掠夺文物还炮击学校,8名孩子被炸死
推荐 黄色片 2019-12-06 14:05 864 8451
申花还有一线生机?这四个因素将是鲁能败北的原因!
推荐 黄色片 2019-12-06 14:05 917 6320
千亿5G投资,谁会是新的赢家?
推荐 黄色片 2019-12-06 14:05 929 2013
这菜遇到多买10斤,软化血管 ,美味下饭,体重不过百,肠道变通畅
推荐 黄色片 2019-12-06 14:05 380 7626
失眠最怕这道汤,山楂和此物一起泡,失眠好了,一觉睡到天亮
推荐 黄色片 2019-12-06 14:05 486 8847
2.78亿年薪?比里皮薪水还高的教练,也是国足主帅人选
推荐 黄色片 2019-12-06 14:05 796 3836
白菜饺子,有人先焯水有人直接包?全不对!教你正确做法,太香了
推荐 黄色片 2019-12-06 14:05 460 5590
传全国首家共享化妆间停业:为什么消费者不买账?
推荐 黄色片 2019-12-06 14:05 272 5197
44岁乐嘉近照曝光,曾经红极一时如今商场走穴演出,更是成了网红
推荐 黄色片 2019-12-06 14:04 295 3211
这所学校被称为“警校少林寺”,在校学生毕业后就是铁饭碗
推荐 黄色片 2019-12-06 14:04 747 7588
强大的票房号召力!金在中亚洲巡演门票两分钟售罄
推荐 黄色片 2019-12-06 14:04 539 1880
抖音封禁近万个违规账号
推荐 黄色片 2019-12-06 14:04 251 5930
宝鸡:中央环保督察15个反馈问题已全部整改
推荐 黄色片 2019-12-06 14:04 121 7910
《亮剑》中最牛的四件武器,魏和尚武器上榜,第1无人不服
推荐 黄色片 2019-12-06 14:04 429 7545
这些家庭消防隐患真不少
推荐 黄色片 2019-12-06 14:04 234 2997
何穗这个大姐头也是没得跑了,一身亮片西装就像走秀场,气场很强
推荐 黄色片 2019-12-06 14:04 536 6405
”新时代苏州好少年“李思睿:“最美军娃”传承红色基因
推荐 黄色片 2019-12-06 14:04 206 6107
上集镇:小龙虾助脱贫 大闸蟹奔小康
推荐 黄色片 2019-12-06 14:04 871 1344
市第六安全生产巡查组检查轨交和小区等在建项目
推荐 黄色片 2019-12-06 14:04 923 9406
固始县史河湾分局民警深入辖区医院开展提升“两率”宣讲会
推荐 黄色片 2019-12-06 14:04 631 2768
朱丹养娃不溺爱,周一围女儿提菜篮动作熟练,小小丹踩泥土不怕脏
推荐 黄色片 2019-12-06 14:04 521 8945
香港兴业国际:打造都市版的“流水人家”
推荐 黄色片 2019-12-06 14:04 951 4212
中国警车“大换血”,淘汰普桑和捷达,新车尽显大国风度!
推荐 黄色片 2019-12-06 14:04 300 2610
蔚来李斌:车卖得不错,我没有那么惨
推荐 黄色片 2019-12-06 14:04 713 8432
迪丽热巴性感起来要人命呢!一身水蓝修身裙若美人鱼,趴着更妖娆
推荐 黄色片 2019-12-06 14:04 755 6983
奇怪的艺术!用胶带把香蕉贴在墙上,这个艺术品售价竟高达84万
推荐 黄色片 2019-12-06 14:04 177 3895
淄博市第六人民医院宪法宣誓
推荐 黄色片 2019-12-06 14:04 230 4400
年末想换手机的看过来,这几款品牌手机降价了
推荐 黄色片 2019-12-06 14:04 919 1336
黄伟晋《北极光》MV邀请黄中平操刀 “双黄”组合发放粉丝福利
推荐 黄色片 2019-12-06 14:04 127 6394
南充新建一所幼儿园 预计2020年秋季开园
推荐 黄色片 2019-12-06 14:04 111 1310
干净利落的冬天气质叠穿,大衣毛衣连衣裙,百搭实用又高级
推荐 黄色片 2019-12-06 14:04 337 796
电视剧:《甄嬛传》家教不同注定了沈眉庄和甄嬛入宫后结局的不同
推荐 黄色片 2019-12-06 14:04 598 1888
CFHD赏金皮肤武器爆料,这两款皮肤竟成玩家最爱?
推荐 黄色片 2019-12-06 14:04 519 7408
靠谱吗?硬汉金钟国将搭档短发女神,为中国网红介绍韩国美妆
推荐 黄色片 2019-12-06 14:04 483 4193
黑色时装上衣搭配白色阔腿裤,穿搭出优雅时尚的名媛范!
推荐 黄色片 2019-12-06 14:04 93 8613
OPPO手机也有不错的机型,这两款可以一试
推荐 黄色片 2019-12-06 14:04 102 7115
真全面屏手机也有不受宠的时候,沦落到千元价位依旧无人问津
推荐 黄色片 2019-12-06 14:04 331 6827
庭院种樱桃,如何才能在庭院中种植好樱桃呢?
推荐 黄色片 2019-12-06 14:04 706 3604
【投票】《梦幻西游三维版》公测服务器由你来定!
推荐 黄色片 2019-12-06 14:04 350 1880
化疗是救人还是在害人?因为副作用,很多人都误会它了
推荐 黄色片 2019-12-06 14:04 304 628
中医的十八种古传针灸手法
推荐 黄色片 2019-12-06 14:04 210 1938
视窗 | CBA常规赛:深圳队、四川队赛前为吉喆默哀
推荐 黄色片 2019-12-06 14:03 476 5156
“劳动教育进课堂”很有必要
推荐 黄色片 2019-12-06 14:03 800 4996
养胃早餐面絮汤的做法,怀念那段在奶奶身边经常喝面絮溜的日子
推荐 黄色片 2019-12-06 14:03 990 4805
视界 | 伊朗:流感致死50余人
推荐 黄色片 2019-12-06 14:03 633 8410
视界 | 烟笼悉尼
推荐 黄色片 2019-12-06 14:03 219 5703
叙利亚终于迎来正义审判,联大91:9通过一决议,美投反对票无效
推荐 黄色片 2019-12-06 14:03 953 9547
少直幼儿园:转培展风采 研讨共成长
推荐 黄色片 2019-12-06 14:03 457 2795
滨海幼儿园:且学且思,行以致远
推荐 黄色片 2019-12-06 14:03 556 8488
女排世俱杯12月6日有几场比赛?形势如何?
推荐 黄色片 2019-12-06 14:03 216 7677
黄日华饰演的虚竹也很经典
推荐 黄色片 2019-12-06 14:03 116 9193
视界 | 阿富汗巴米扬的穴居生活
推荐 黄色片 2019-12-06 14:03 583 5078
这几种水果是“助火”的,一次别吃太多
推荐 黄色片 2019-12-06 14:03 952 8543
如果一个女人暗恋你,会释放出四个信号,收到一个你就别再怂了
推荐 黄色片 2019-12-06 14:03 664 800
冬日桃花潭
推荐 黄色片 2019-12-06 14:03 868 607
“根治欠薪”象山人社在行动——象山县召开“裁审衔接”联席会
推荐 黄色片 2019-12-06 14:03 380 8079
奉献爱心 人人参与
推荐 黄色片 2019-12-06 14:03 861 7901
互联网筹款平台亟待依法规范发展
推荐 黄色片 2019-12-06 14:03 147 1052
汇龙小学:聚焦课堂 提升素养
推荐 黄色片 2019-12-06 14:03 104 8199
郑州首部老旧小区加装电梯试水成功
推荐 黄色片 2019-12-06 14:03 516 2162
《星际探索》太令人失望,浪费了布拉德皮特的演技
推荐 黄色片 2019-12-06 14:03 125 1310
翠屏区召开村级纪检委员履职成效提升专题培训动员会
推荐 黄色片 2019-12-06 14:03 473 881
根管治疗中氢氧化钙的临床实用总结
推荐 黄色片 2019-12-06 14:03 774 861
视界 | 柏林动物园发布旅德大熊猫双胞胎近照 超萌!
推荐 黄色片 2019-12-06 14:03 806 9364
打卡湖南郴州永兴县第一次去
推荐 黄色片 2019-12-06 14:03 258 624
故事 | 广西环江:一师一生一学校的坚守
推荐 黄色片 2019-12-06 14:03 578 8005
天冷了,早餐就喜欢热气腾腾的这一碗,不用早起,五分钟做好
推荐 黄色片 2019-12-06 14:03 870 3300
河南洛阳失联女生确认遇害 家属:嫌犯系曾与其喝酒男同事
推荐 黄色片 2019-12-06 14:03 929 8508
在卧室就用了一张纸,孩子一夏天都没咋被蚊子咬
推荐 黄色片 2019-12-06 14:03 251 6432
洛阳失联五天女大学生被证实遇害,嫌疑人系其实习公司同事
推荐 黄色片 2019-12-06 14:02 705 4539
AFTER五金工具专注行星减速器,为核心提供保障
推荐 黄色片 2019-12-06 14:02 140 2667
国务院关税税则委员会开展部分大豆、猪肉等自美采购商品的排除工作
推荐 黄色片 2019-12-06 14:02 108 8508
赤峰元宝山区多措并举着力提升统战信息工作水平
推荐 黄色片 2019-12-06 14:02 184 9504
德阳什邡市政协文教医卫体法制委主任陈荣久主动投案 接受纪律审查和监察调查
推荐 黄色片 2019-12-06 14:02 391 6088
合肥籍少将已任国防大学科研部部长
推荐 黄色片 2019-12-06 14:02 531 4036
杭州市属高校首个妇联组织 杭州师范大学妇联成立
推荐 黄色片 2019-12-06 14:02 874 9849
剪刀手小能手!李菲儿凌晨抵京气色超好 宽松嘻哈装扮走街头风
推荐 黄色片 2019-12-06 14:02 157 9679