JS 执行环境与执行堆叠 DAY48

执行环境(Execution context)
https://ithelp.ithome.com.tw/upload/images/20201013/20123039EtgKS1bhpO.jpg

我们上一篇有提到
若在 callMe 宣告任何变数
其作用域都会限制在此函式(callMe)内
注意
若没有执行此函式
不会有任何变数产生
执行环境也不会产生 只有 "函式被执行" 的时候 执行环境才会产生(请牢记!!)

若 callme 此函式不断执行
则会一直产生执行环境

执行环境

  • 限制作用域
  • this

除了函式会产生执行环境
当然
全域也有属於自己的全域执行环境
网页一开启 或是後端nodeJS一开启 就建立执行环境
https://ithelp.ithome.com.tw/upload/images/20201013/20123039G8tAcU9OOf.jpg

https://ithelp.ithome.com.tw/upload/images/20201013/20123039MSw8GbjNce.jpg
此 window 为全域变数

https://ithelp.ithome.com.tw/upload/images/20201013/20123039M7vyS7FPW5.jpg
当然 目前这里的 this 也会跟 window 一样(属於全域执行环境)
但这里的 this 会因执行环境而有所不同


执行堆叠(Execution stack)

https://ithelp.ithome.com.tw/upload/images/20201013/20123039KNTgzYHHRJ.jpg

这里堆叠的方式
是与函式呼叫的位置有关

当离开也会是一层一层离开
(sayHi --> doSomething --> 全域执行环境 )

可按下 F12 在 Sources 观看 Call Stack 的流程
那今天的介绍就到这里啦
明天将介绍 范围链提升 (重要!!!!)
若有任何问题 或 内容有误
请别吝啬的跟我说唷/images/emoticon/emoticon41.gif


<<:  如果要架设一个HTTPs File Server, 推荐用什麽软件呢?

>>:  第 56 天 - 帐号管理 - 批量查询使用者资料

【Side Project】 赛後检讨

经历了一个月的洗礼,又再一次完成了铁人赛。 当然不免俗的,最後来一篇赛後检讨。 这篇分成三个大部分来...

学习Python纪录Day21 - 用Python处理Excel

用Python处理Excel Python可以使用openpyxl自动化处理excel的编辑、建立、...

[Day23] Esp32 + LINE

1.前言 今天我们将进入到Esp32结合Line的推播服务(开始变得有趣起来了呢!)相信这应该也是大...

从 JavaScript 角度学 Python(23) - Class

前言 接下来算是小聊一下 Python 的 Class 语法而已,算是稍微休息一下,所以这边简单聊就...

Day28 - 铁人付外挂部署与发行(一)- 建立测试机

开发 WooCommerce 金流外挂能在本机测试的部分除了确保设定项有正确写入资料库外,剩下的就是...