<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>JavaScript on 知识铺的博客</title>
    <link>https://index.zshipu.com/geek/tags/JavaScript/</link>
    <description>Recent content in JavaScript on 知识铺的博客</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>zh-CN</language>
    <lastBuildDate>Tue, 01 Sep 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://index.zshipu.com/geek/tags/JavaScript/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>JS 内存泄漏排查：Chrome DevTools 真实案例拆解闭包与 GC</title>
      <link>https://index.zshipu.com/geek/post/20260901/JS-%E5%86%85%E5%AD%98%E6%B3%84%E6%BC%8F%E6%8E%92%E6%9F%A5Chrome-DevTools-%E7%9C%9F%E5%AE%9E%E6%A1%88%E4%BE%8B%E6%8B%86%E8%A7%A3%E9%97%AD%E5%8C%85%E4%B8%8E-GC/</link>
      <pubDate>Tue, 01 Sep 2026 00:00:00 +0000</pubDate>
      <guid>https://index.zshipu.com/geek/post/20260901/JS-%E5%86%85%E5%AD%98%E6%B3%84%E6%BC%8F%E6%8E%92%E6%9F%A5Chrome-DevTools-%E7%9C%9F%E5%AE%9E%E6%A1%88%E4%BE%8B%E6%8B%86%E8%A7%A3%E9%97%AD%E5%8C%85%E4%B8%8E-GC/</guid>
      <description>JS 使用可达性算法的标记-清除机制进行垃圾回收，闭包意外保留引用常导致内存无法释放。真实案例中，开发者通过 Chrome DevTools 的内存分析工具成功定位并解决了此类泄漏，同时深入理解了闭包与 GC 的交互。 Chrome DevTools 能直接展示堆中的对象引用路径，让开发者看到闭包变量如何把本该回收的大对象一直挂在根上。理解这个机制</description>
    </item>
    <item>
      <title>如果 Javascript 是单线程的，它是如何异步的</title>
      <link>https://index.zshipu.com/geek/post/javascript/%E5%A6%82%E6%9E%9C-Javascript-%E6%98%AF%E5%8D%95%E7%BA%BF%E7%A8%8B%E7%9A%84%E5%AE%83%E6%98%AF%E5%A6%82%E4%BD%95%E5%BC%82%E6%AD%A5%E7%9A%84/</link>
      <pubDate>Sun, 24 Apr 2022 12:31:56 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/javascript/%E5%A6%82%E6%9E%9C-Javascript-%E6%98%AF%E5%8D%95%E7%BA%BF%E7%A8%8B%E7%9A%84%E5%AE%83%E6%98%AF%E5%A6%82%E4%BD%95%E5%BC%82%E6%AD%A5%E7%9A%84/</guid>
      <description>Javascript 是一种单线程语言。这意味着它有一个调用栈和一个内存堆。正如预期的那样，它按顺序执行代码，并且必须在执行下一段代码之前完成一段代码。它是同步的，但有时可能是有害的。例如，如果一个函数需要一段时间才能执行或必须等待某事，它会同时冻结所有内容。 发生这种情况的一个很好的例子是窗口警报功</description>
    </item>
    <item>
      <title>让你更懂 JavaScript：13 JavaScript 启动性能瓶颈分析与解决方案</title>
      <link>https://index.zshipu.com/geek/post/javascript/%E8%AE%A9%E4%BD%A0%E6%9B%B4%E6%87%82-JavaScript13-JavaScript-%E5%90%AF%E5%8A%A8%E6%80%A7%E8%83%BD%E7%93%B6%E9%A2%88%E5%88%86%E6%9E%90%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/</link>
      <pubDate>Tue, 15 Mar 2022 15:22:10 +0000</pubDate>
      <guid>https://index.zshipu.com/geek/post/javascript/%E8%AE%A9%E4%BD%A0%E6%9B%B4%E6%87%82-JavaScript13-JavaScript-%E5%90%AF%E5%8A%A8%E6%80%A7%E8%83%BD%E7%93%B6%E9%A2%88%E5%88%86%E6%9E%90%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/</guid>
      <description>JavaScript Start-up Performance|JavaScript 启动性能瓶颈分析与解决方案 Chrome 插件 Console Importer 推荐：Easily import JS and CSS resources from Chrome console. （可以在浏览器控制台安装 loadsh、moment、jQuery 等库，在控制台直接验证、使用这些库。） 参考资料： v8 官方文档 图解 Google V8 浏览器工作原理与实践 V8、Chrome、Node.js【知乎专栏】 JavaScript 引擎 V8</description>
    </item>
    <item>
      <title>让你更懂 JavaScript：12 在 V8 引擎里 5 个优化代码的技巧</title>
      <link>https://index.zshipu.com/geek/post/javascript/%E8%AE%A9%E4%BD%A0%E6%9B%B4%E6%87%82-JavaScript12-%E5%9C%A8-V8-%E5%BC%95%E6%93%8E%E9%87%8C-5-%E4%B8%AA%E4%BC%98%E5%8C%96%E4%BB%A3%E7%A0%81%E7%9A%84%E6%8A%80%E5%B7%A7/</link>
      <pubDate>Tue, 15 Mar 2022 14:24:10 +0000</pubDate>
      <guid>https://index.zshipu.com/geek/post/javascript/%E8%AE%A9%E4%BD%A0%E6%9B%B4%E6%87%82-JavaScript12-%E5%9C%A8-V8-%E5%BC%95%E6%93%8E%E9%87%8C-5-%E4%B8%AA%E4%BC%98%E5%8C%96%E4%BB%A3%E7%A0%81%E7%9A%84%E6%8A%80%E5%B7%A7/</guid>
      <description>对象属性的顺序: 在实例化你的对象属性的时候一定要使用相同的顺序，这样隐藏类和随后的优化代码才能共享； 动态属性: 在对象实例化之后再添加属性会强制使得隐藏类变化，并且会减慢为旧隐藏类所优化的代码的执行。所以，要在对象的构造函数中完成所有属性的分配； 方法: 重复执行相同的方法会运行的比不</description>
    </item>
    <item>
      <title>让你更懂 JavaScript：11 13 个 JavaScript 性能提升技巧</title>
      <link>https://index.zshipu.com/geek/post/javascript/%E8%AE%A9%E4%BD%A0%E6%9B%B4%E6%87%82-JavaScript11-13-%E4%B8%AA-JavaScript-%E6%80%A7%E8%83%BD%E6%8F%90%E5%8D%87%E6%8A%80%E5%B7%A7/</link>
      <pubDate>Tue, 15 Mar 2022 14:22:10 +0000</pubDate>
      <guid>https://index.zshipu.com/geek/post/javascript/%E8%AE%A9%E4%BD%A0%E6%9B%B4%E6%87%82-JavaScript11-13-%E4%B8%AA-JavaScript-%E6%80%A7%E8%83%BD%E6%8F%90%E5%8D%87%E6%8A%80%E5%B7%A7/</guid>
      <description>Daniel Clifford 在 Google I/O2012 上做了一个精彩的演讲 “Breaking the JavaScript Speed Limit with V8”。在演讲中，他深入解释了 13 个简单的代码优化方法，可以让你的 JavaScript 代码在 Chrome V8 引擎编译 / 运行时更加快速。在演讲中，他介绍了怎么优化，并解释了原因。下面简明的列出了 13 个 JavaScript 性能提升技巧： 在构造函数里初始化所有对象的成员 (所以这些</description>
    </item>
    <item>
      <title>让你更懂 JavaScript：10 机器码、字节码</title>
      <link>https://index.zshipu.com/geek/post/javascript/%E8%AE%A9%E4%BD%A0%E6%9B%B4%E6%87%82-JavaScript10-%E6%9C%BA%E5%99%A8%E7%A0%81%E5%AD%97%E8%8A%82%E7%A0%81/</link>
      <pubDate>Tue, 15 Mar 2022 13:22:10 +0000</pubDate>
      <guid>https://index.zshipu.com/geek/post/javascript/%E8%AE%A9%E4%BD%A0%E6%9B%B4%E6%87%82-JavaScript10-%E6%9C%BA%E5%99%A8%E7%A0%81%E5%AD%97%E8%8A%82%E7%A0%81/</guid>
      <description>1、字节码 早期的 V8 为了提升代码的执行速度，直接将 JavaScript 源代码编译成了没有优化的二进制机器代码，如果某一段二进制代码执行频率过高，那么 V8 会将其标记为热点代码，热点代码会被优化编译器优化，优化后的机器代码执行效率更高。 随着移动设备的普及，V8 团队逐渐发现将 JavaScript 源码直接编译成二进制代码存在两</description>
    </item>
    <item>
      <title>让你更懂 JavaScript：Javascript 与 V8</title>
      <link>https://index.zshipu.com/geek/post/javascript/%E8%AE%A9%E4%BD%A0%E6%9B%B4%E6%87%82-JavaScript09-Javascript-%E4%B8%8E-V8/</link>
      <pubDate>Mon, 14 Mar 2022 23:22:10 +0000</pubDate>
      <guid>https://index.zshipu.com/geek/post/javascript/%E8%AE%A9%E4%BD%A0%E6%9B%B4%E6%87%82-JavaScript09-Javascript-%E4%B8%8E-V8/</guid>
      <description>9.1、一等公民的定义 在编程语言中，一等公民可以作为函数参数，可以作为函数返回值，也可以赋值给变量。如果某个编程语言的函数，可以和这个语言的数据类型做一样的事情，我们就把这个语言中的函数称为一等公民。 例如，字符串在几乎所有编程语言中都是一等公民，字符串可以做为函数参数，字符串可以</description>
    </item>
    <item>
      <title>让你更懂 JavaScript：08 V8 是怎么执行一段 JavaScript 代码的</title>
      <link>https://index.zshipu.com/geek/post/javascript/%E8%AE%A9%E4%BD%A0%E6%9B%B4%E6%87%82-JavaScript08-V8-%E6%98%AF%E6%80%8E%E4%B9%88%E6%89%A7%E8%A1%8C%E4%B8%80%E6%AE%B5-JavaScript-%E4%BB%A3%E7%A0%81%E7%9A%84/</link>
      <pubDate>Mon, 14 Mar 2022 22:22:10 +0000</pubDate>
      <guid>https://index.zshipu.com/geek/post/javascript/%E8%AE%A9%E4%BD%A0%E6%9B%B4%E6%87%82-JavaScript08-V8-%E6%98%AF%E6%80%8E%E4%B9%88%E6%89%A7%E8%A1%8C%E4%B8%80%E6%AE%B5-JavaScript-%E4%BB%A3%E7%A0%81%E7%9A%84/</guid>
      <description>在 V8 出现之前，所有的 JavaScript 虚拟机所采用的都是解释执行的方式，「这是 JavaScript 执行速度过慢的一个主要原因」。而 V8 率先引入了即时编译（JIT）的双轮驱动的设计，这是一种权衡策略，混合编译执行和解释执行这两种手段，给 JavaScript 的执行速度带来了极大的提升。 另外，V8 也是早于其他虚拟机引入了惰性编译、内联缓存</description>
    </item>
    <item>
      <title>让你更懂 JavaScript：07 解释执行和编译执行区别</title>
      <link>https://index.zshipu.com/geek/post/javascript/%E8%AE%A9%E4%BD%A0%E6%9B%B4%E6%87%82-JavaScript07-%E8%A7%A3%E9%87%8A%E6%89%A7%E8%A1%8C%E5%92%8C%E7%BC%96%E8%AF%91%E6%89%A7%E8%A1%8C%E5%8C%BA%E5%88%AB/</link>
      <pubDate>Mon, 14 Mar 2022 20:22:10 +0000</pubDate>
      <guid>https://index.zshipu.com/geek/post/javascript/%E8%AE%A9%E4%BD%A0%E6%9B%B4%E6%87%82-JavaScript07-%E8%A7%A3%E9%87%8A%E6%89%A7%E8%A1%8C%E5%92%8C%E7%BC%96%E8%AF%91%E6%89%A7%E8%A1%8C%E5%8C%BA%E5%88%AB/</guid>
      <description>V8 本质上是一个虚拟机，因为计算机只能识别二进制指令，所以要让计算机执行一段高级语言通常有两种手段： 解释执行 需要先将输入的源代码通过解析器编译成中间代码，之后直接使用解释器解释执行中间代码，然后直接输出结果。具体流程如下图所示： 编译执行 采用这种方式时，也需要先将源代码转换为中间代码</description>
    </item>
    <item>
      <title>让你更懂 JavaScript：V8 引擎的内部结构</title>
      <link>https://index.zshipu.com/geek/post/javascript/%E8%AE%A9%E4%BD%A0%E6%9B%B4%E6%87%82-JavaScript06-V8-%E5%BC%95%E6%93%8E%E7%9A%84%E5%86%85%E9%83%A8%E7%BB%93%E6%9E%84/</link>
      <pubDate>Mon, 14 Mar 2022 19:22:10 +0000</pubDate>
      <guid>https://index.zshipu.com/geek/post/javascript/%E8%AE%A9%E4%BD%A0%E6%9B%B4%E6%87%82-JavaScript06-V8-%E5%BC%95%E6%93%8E%E7%9A%84%E5%86%85%E9%83%A8%E7%BB%93%E6%9E%84/</guid>
      <description>V8 是一个非常复杂的项目，有超过 100 万行 C++ 代码。它由许多子模块构成，其中这 4 个模块是最重要的： Parse 负责将 JavaScript 源码转换为 Abstract Syntax Tree (AST)。确切的说，在 Parser 将 JavaScript 源码转换为 AST 前，还有一个叫 Scanner 的过程，具体流程如下： Ignition 即解释器，负责将 AST 转换为 Bytecode，解释执行 Bytecode；同时收集 TurboFan 优化</description>
    </item>
    <item>
      <title>让你更懂 JavaScript：05 什么是 V8</title>
      <link>https://index.zshipu.com/geek/post/javascript/%E8%AE%A9%E4%BD%A0%E6%9B%B4%E6%87%82-JavaScript05-%E4%BB%80%E4%B9%88%E6%98%AF-V8/</link>
      <pubDate>Mon, 14 Mar 2022 18:22:10 +0000</pubDate>
      <guid>https://index.zshipu.com/geek/post/javascript/%E8%AE%A9%E4%BD%A0%E6%9B%B4%E6%87%82-JavaScript05-%E4%BB%80%E4%B9%88%E6%98%AF-V8/</guid>
      <description>V8 是由 Google 开发的开源 JavaScript 引擎，是 JavaScript 虚拟机的一种，模拟实际计算机各种功能来实现代码的编译和执行。我们可以简单地把 JavaScript 虚拟机理解成是一个翻译程序，将人类能够理解的 编程语言 JavaScript，翻译成机器能够理解的机器语言。目前主要用在 Chrome 浏览器和 Node.js 中。如下图所示： 图中中间的「黑盒」就是 JavaScript 引擎</description>
    </item>
    <item>
      <title>让你更懂 JavaScript：04 什么是 D8</title>
      <link>https://index.zshipu.com/geek/post/javascript/%E8%AE%A9%E4%BD%A0%E6%9B%B4%E6%87%82-JavaScript04-%E4%BB%80%E4%B9%88%E6%98%AF-D8/</link>
      <pubDate>Mon, 14 Mar 2022 17:22:10 +0000</pubDate>
      <guid>https://index.zshipu.com/geek/post/javascript/%E8%AE%A9%E4%BD%A0%E6%9B%B4%E6%87%82-JavaScript04-%E4%BB%80%E4%B9%88%E6%98%AF-D8/</guid>
      <description>D8 是一个非常有用的调试工具，你可以把它看成是 debug for V8 的缩写。我们可以使用 d8 来查看 V8 在执行 JavaScript 过程中的各种中间数据，比如作用域、AST、字节码、优化的二进制代码、垃圾回收的状态，还可以使用 d8 提供的私有 API 查看一些内部信息。 V8 源码编译出来的可执行程序名为 d8。d8 作为 V8 引擎在命令行中可以使</description>
    </item>
    <item>
      <title>让你更懂 JavaScript：03 热门 JavaScript 的引擎有哪些</title>
      <link>https://index.zshipu.com/geek/post/javascript/%E8%AE%A9%E4%BD%A0%E6%9B%B4%E6%87%82-JavaScript03-%E7%83%AD%E9%97%A8-JavaScript-%E7%9A%84%E5%BC%95%E6%93%8E%E6%9C%89%E5%93%AA%E4%BA%9B/</link>
      <pubDate>Mon, 14 Mar 2022 16:22:10 +0000</pubDate>
      <guid>https://index.zshipu.com/geek/post/javascript/%E8%AE%A9%E4%BD%A0%E6%9B%B4%E6%87%82-JavaScript03-%E7%83%AD%E9%97%A8-JavaScript-%E7%9A%84%E5%BC%95%E6%93%8E%E6%9C%89%E5%93%AA%E4%BA%9B/</guid>
      <description>V8 (Google)，用 C++ 编写，开放源代码，由 Google 丹麦开发，是 Google Chrome 的一部分，也用于 Node.js。 JavaScriptCore (Apple)，开放源代码，用于 webkit 型浏览器，如 Safari ，2008 年实现了编译器和字节码解释器，升级为了 SquirrelFish。苹果内部代号为 “Nitro” 的 JavaScript 引擎也是基于 JavaScriptCore 引擎的。 Rhin</description>
    </item>
    <item>
      <title>让你更懂 JavaScript：02 为什么需要 JavaScript 引擎</title>
      <link>https://index.zshipu.com/geek/post/javascript/%E8%AE%A9%E4%BD%A0%E6%9B%B4%E6%87%82-JavaScript02-%E4%B8%BA%E4%BB%80%E4%B9%88%E9%9C%80%E8%A6%81-JavaScript-%E5%BC%95%E6%93%8E/</link>
      <pubDate>Mon, 14 Mar 2022 14:22:10 +0000</pubDate>
      <guid>https://index.zshipu.com/geek/post/javascript/%E8%AE%A9%E4%BD%A0%E6%9B%B4%E6%87%82-JavaScript02-%E4%B8%BA%E4%BB%80%E4%B9%88%E9%9C%80%E8%A6%81-JavaScript-%E5%BC%95%E6%93%8E/</guid>
      <description>我们写的 JavaScript 代码直接交给浏览器或者 Node 执行时，底层的 CPU 是不认识的，也没法执行。CPU 只认识自己的指令集，指令集对应的是汇编代码。写汇编代码是一件很痛苦的事情。并且不同类型的 CPU 的指令集是不一样的，那就意味着需要给每一种 CPU 重写汇编代码。 JavaScript 引擎可以将 JS 代码编译为不同 CPU(Intel, ARM 以及 MIPS 等) 对应的汇编</description>
    </item>
    <item>
      <title>让你更懂 JavaScript：JavaScript 的基本特性和设计思想</title>
      <link>https://index.zshipu.com/geek/post/javascript/%E8%AE%A9%E4%BD%A0%E6%9B%B4%E6%87%82-JavaScript01-JavaScript-%E7%9A%84%E5%9F%BA%E6%9C%AC%E7%89%B9%E6%80%A7%E5%92%8C%E8%AE%BE%E8%AE%A1%E6%80%9D%E6%83%B3/</link>
      <pubDate>Mon, 14 Mar 2022 13:22:10 +0000</pubDate>
      <guid>https://index.zshipu.com/geek/post/javascript/%E8%AE%A9%E4%BD%A0%E6%9B%B4%E6%87%82-JavaScript01-JavaScript-%E7%9A%84%E5%9F%BA%E6%9C%AC%E7%89%B9%E6%80%A7%E5%92%8C%E8%AE%BE%E8%AE%A1%E6%80%9D%E6%83%B3/</guid>
      <description>JavaScript 的语言设计，借鉴了很多语言的特性，比如: C 语言的基本语法、Java 的类型系统和内存管理、Scheme 的函数作为一等公民，还有 Self 基于原型（prototype）的继承机制。 JavaScript 是一门非常优秀的语言，特别是「原型继承机制」和「函数是一等公民」这两个设计。 JavaScript 也有很多的先天不足，例如：使用</description>
    </item>
  </channel>
</rss>
