01javascript

以下来自对 coderwhy 老师 js高级课程的学习 以及自己的总结

javascript运行原理

浏览器工作原理

静态资源 输入服务器地址 url 回车

  1. 先查看浏览器缓存-系统缓存 若有则直接展示 or next
  2. DNS 解析 获取相应的 ip 地址
  3. TCP连接 建立 三次握手
  4. 发送HTTP请求
  5. 服务器处理请求并返回HTTP报文
  6. 浏览器收到HTTP 响应
  7. 读取页面内容,浏览器渲染,解析html
  8. 生成Dom树,解析css,样式,js交互
  9. 客户端和服务器继续进行交互…

浏览器内核

javascript引擎

v8引擎 Google开发 在用

浏览器内核分为两部分 一部分负责 HTML解析,布局,渲染 另一部分负责 执行javascript代码

javascript的执行过程

初始化全局对象

js引擎会在执行代码之前,在堆内存中创建一个全局对象(GO) Global Object
该对象所有的作用域都可以访问
里面会包含 Date,Array,String,Number,setTimeout.setInterval 等
在浏览器窗口中还会有一个 window属性指向自己

执行上下文栈

Execution Context Stack (ESC)执行上下文栈 用于执行代码的调用栈
全局代码 构建 一个 Global Execution Context(GEC)
放入 ESC 中 执行

在代码执行前 转换树的过程中 会将 全局定义的变量 函数等 加入 GO 中 (作用域提示 没有值)
然后代码一行一行执行 对变量赋值 以及其他操作

函数执行

会根据函数体创建一个 函数执行上下文(Functional Execution Context)FEC 压入 EC Stack 中

在函数执行上下文中 会创建一个 Activation Object 里面包含 arguments, 函数定义 ,指向, 变量
作用域链 由VO(也就是此时的 AO对象 )和父级 也就是外层的 VO 在查找某个值的时候 逐层查找 由内到外
this 绑定的值

VO ---- variable object ----- VE — variable enviroment 就是 当时的一个 类似的 作用域

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值