楼主: Dkriwoxk3
451 0

[找数据和资料] 通过实例了解JS执行上下文运行原理 [推广有奖]

  • 0关注
  • 0粉丝

高中生

80%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0.1000
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
260 点
帖子
24
精华
0
在线时间
5 小时
注册时间
2020-7-19
最后登录
2020-8-1

楼主
Dkriwoxk3 发表于 2020-7-19 19:05:54 来自手机 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我们都知道,JS代码的执行顺序总是与代码先后顺序有所差异,当先抛开异步问题你会发现就算是同步代码,它的执行也与你的预期不一致,比如:
function f1() {<br>
  console.log('听风是风');<br>
};<br>
f1(); //echo<br>
function f1() {<br>
  console.log('echo');<br>
};<br>
f1(); //echo<br>
按照代码书写顺序,应该先输出 听风是风,再输出 echo才对,很遗憾,两次输出均为 echo;如果我们将上述代码中的函数声明改为函数表达式,结果又不太一样:
var f1 = function () {<br>
  console.log dool izswenda.com ,vol.d('听风是风');<br>
};<br>
f1(); //听风是风<br>
var f1 = function() {6<br>
  console.log('echo');<br>
};<br>
f1(); //echo<br>
这说明代码在执行前一定发生了某些微妙的变化,JS引擎究竟做了什么呢?这就不得不提JS执行上下文的了。
贰  JS执行上下文
JS代码在执行前,JS引擎总要做一番准备工作,这份工作其实就是创建对应的执行上下文;
执行上下文有且只有三类,全局执行上下文,函数上下文,与eval上下文;由于eval一般不会使用,这里不做讨论。
1.全局执行上下文
全局执行上下文只有一个,在客户端中一般由浏览器创建,也就是我们熟知的window对象,我们能通过this直接访问到它。<br><br>
全局对象window上预定义了大量的方法和属性,我们在全局环境的任意处都能直接访问这些属性方法,同时window对象还是var声明的全局变量的载体。我们通过var创建的全局对象,都可以通过window直接访问。<br>

<div align="left"  >JS代码首次运行,都会先创建一个全局执行上下文并压入到执行栈中,之后每当有函数被调用,都会创建一个新的函数执行上下文并压入栈内;由于执行栈LIFO的特性,所以可以理解为,JS代码执行完毕前在执行栈底部永远有个全局执行上下文。<br>

</div><br>

<div align="left"  >function f1() { f2(); console.log(1); }; function f2() { f3(); console.log(2); }; function f3() { console.log(3); }; f1();//3 2 1<br>

</div><br>

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:上下文 function Console Window Sole

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-24 03:03