当前位置: 首页 > 网络应用技术

更深入javascript操作原理

时间:2023-03-07 21:38:00 网络应用技术

  您是否深入思考:JavaScript代码,如何在浏览器中执行?

  对代码进行了分析,V8引擎将帮助我们创建一个对象(GlobalObject-> GO)

  运行代码

  JS引擎内有一个执行上下文堆栈,该堆栈称为ECS,用于执行代码调用堆栈

  点火是一种解释器,可将AST转换为字节码(字节)

  Turbofan是可以将字节代码编译到可以直接执行的CPU的编译器;

  在第二行中打印num1将显示未定义

  打印结果:你好全球

  执行过程:首先,pre -preclied {消息:Undefined,foo:0xa00,bar:0xb00};然后执行代码以给出各种作业{消息:“ Hello Global”,foo:0xa00,bar:0xb00}; bar(),然后首先称为bar(),然后在此处执行上下文。其中的vo对象是AO。此处的var消息存储在AO中,然后致电FOO()还有另一个函数执行上下文。这里执行的代码是打印消息。然后发现的第一件事是,该字段中有一个消息()。将其称为“ Hello Global”

  第一个问题

  输出结果:

  分析:第一个预编译 - > {n:undefined,foo:0xa00},然后在编译时将值分配给n,调用foo(),此处调用foo函数并创建函数执行上下文。如果n在foo函数对象,您将转到上层以在父级中找到n并将值分配给200,因此相当于修改旅途中的值,因此,当最终打印时,n为200。

  注意:让我在这里区分它。如果是这种情况,输出n为100

  两个问题

  输出结果:

  分析:

  第三个问题

  输出结果:请参阅评论

  第四个问题

  输出结果:

  分析:

  第五个问题

  输出结果:

  原始:https://juejin.cn/post/7099834026541711391