JavaScript引擎相关名词

2019-07-04 13:11:26

JS引擎的一些事

JS引擎

  • 一个读取代码并运行的引擎,没有单一的"JS引擎";
  • 每个浏览器都有自己的引擎,流行的引擎项目:
    • 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 物联网的轻量级引擎

作用域

  • 可以从中访问变量的"区域"

词法作用域

  • 在词法阶段的作用域,换句话说,词法作用域是由你在写代码时将变量和块作用域写在哪里来决定的,因此当词法分析器处理代码时会保持作用域不变

块作用域

  • 由花括号{}创建的范围

作用域链

  • 函数可以上升到它的外部环境(词法上)来搜索一个变量,它可以一直向上查找,直到它到达全局作用域

同步

  • 一次执行一件事, “同步”引擎一次只执行一行,JavaScript是同步的

异步

  • 同时做多个事,JS通过浏览器API模拟异步行为

事件循环(Event Loop)

  • 浏览器API完成函数调用的过程,将回调函数推送到回调队列(callback queue),然后当堆栈为空时,它将回调函数推送到调用堆栈

堆栈

  • 一种数据结构,只能将元素推入并弹出顶部元素。 想想堆叠一个字形的塔楼; 你不能删除中间块,后进先出

  • 变量存储在内存中

调用堆栈

  • 函数调用的队列,它实现了堆栈数据类型,这意味着一次可以运行一个函数。 调用函数将其推入堆栈并从函数返回将其弹出堆栈

执行上下文

  • 当函数放入到调用堆栈时由JS创建的环境

闭包

  • 当在另一个函数内创建一个函数时,它“记住”它在以后调用时创建的环境

垃圾收集

  • 当内存中的变量被自动删除时,因为它不再使用,引擎要处理掉它

变量的提升

  • 当变量内存没有赋值时会被提升到全局的顶部并设置为undefined

this

  • 由JavaScript为每个新的执行上下文自动创建的变量/关键字
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-ND 3.0 许可协议。可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。

扫描下方二维码阅读当前文章

浏览器、微信扫码

评 论:

好文推荐
每天进步一点点~