跳到主要内容

“理解ECMAScript规范,第二部分”的额外内容

· 阅读需 3 分钟
[Marja Hölttä](https://twitter.com/marjakh),推测的规范观察者

为什么o2.foo是一个AssignmentExpression?

o2.foo看起来不像一个AssignmentExpression,因为没有赋值。为什么它是一个AssignmentExpression

规范实际上允许AssignmentExpression既可以作为参数,也可以作为赋值的右侧。例如:

function simple(a) {
console.log('参数是 ' + a);
}
simple(x = 1);
// → 输出“参数是 1”。
x;
// → 1

…以及…

x = y = 5;
x; // 5
y; // 5

o2.foo是一个AssignmentExpression,但它实际上没有进行赋值。这源于以下语法规则,每一个规则都处理到“最简单”的情况直到最后一个:

AssignmentExpression不需要包含赋值,它也可以只是一个ConditionalExpression

AssignmentExpression : ConditionalExpression

(还有其他规则,这里我们只展示相关的规则。)

ConditionalExpression不需要包含条件(a == b ? c : d),它也可以只是一个ShortcircuitExpression

ConditionalExpression : ShortCircuitExpression

等等:

ShortCircuitExpression : LogicalORExpression

LogicalORExpression : LogicalANDExpression

LogicalANDExpression : BitwiseORExpression

BitwiseORExpression : BitwiseXORExpression

BitwiseXORExpression : BitwiseANDExpression

BitwiseANDExpression : EqualityExpression

EqualityExpression : RelationalExpression

RelationalExpression : ShiftExpression

V8 发布 v8.1

· 阅读需 2 分钟
Dominik Inführ,国际化的神秘人物

每六周,我们根据发布流程创建一个新的 V8 分支。每个版本都基于 V8 的 Git 主分支,在 Chrome Beta 里程碑之前立即分支出来。今天我们很高兴宣布我们的最新分支,V8 版本 8.1,该版本处于测试阶段,直到数周后与 Chrome 81 稳定版协调发布。V8 v8.1 包含各种开发者相关的好东西。这篇文章预览了一些亮点,以期待该版本的发布。

理解 ECMAScript 规范,第一部分

· 阅读需 9 分钟
[Marja Hölttä](https://twitter.com/marjakh),规范观察者

所有章节

在本文中,我们将从规范中的一个简单函数入手,尝试理解它的符号。开始吧!

前言

即使你了解 JavaScript,阅读它的语言规范,ECMAScript 语言规范,简称 ECMAScript 规范,也可能会让人望而生畏。至少这是我第一次开始阅读时的感受。

V8 发布 v8.0

· 阅读需 5 分钟
Leszek Swirski,第八代 V8

它终于来了。每次 V8 发布,每六周我们都会根据发布流程创建一个新分支,总会有人问当 V8 达到版本 8 时会发生什么。我们会举办派对吗?我们会发布新的编译器吗?我们会跳过版本 8 和 9,直接保持为永恒的 V8 版本 X 吗?最终,在经过超过十年的努力,在我们第 100 篇博客文章中,我们很高兴地宣布我们的最新分支,V8 版本 8.0 V8,我们终于可以回答这个问题:

脱离网络:使用 Emscripten 的独立 WebAssembly 二进制文件

· 阅读需 14 分钟
Alon Zakai

Emscripten 一直以来主要专注于编译到 Web 和其他 JavaScript 环境(如 Node.js)。但是,随着 WebAssembly 开始在不需要JavaScript 的情况下被使用,出现了一些新的用例,因此我们一直在努力支持从 Emscripten 发出的独立 Wasm 文件,这些文件不依赖于 Emscripten 的 JS 运行时!本文会解释为什么这很有趣。

V8 版本 v7.9 发布

· 阅读需 5 分钟
Santiago Aboy Solanes,指针压缩高手

每六周我们都会基于 发布流程 创建一个新的 V8 分支。每个版本都是在 Chrome 测试版里程碑之前直接从 V8 的 Git 主分支分出。今天,我们很高兴地宣布最新的分支 V8 version 7.9。该版本目前处于测试版阶段,并将在几周内与 Chrome 79 稳定版同步发布。V8 v7.9 包含各种面向开发者的功能和改进。本文将提前预览其中的一些亮点。

改善 V8 正则表达式

· 阅读需 8 分钟
Patrick Thier 和 Ana Peško,对正则表达式发表意见的常规专家

在默认配置下,V8 在正则表达式第一次执行时会将其编译为本地代码。作为我们对 无 JIT 的 V8 的工作的一部分,我们引入了一个正则表达式解释器。解释正则表达式的优势在于使用更少的内存,但会带来性能上的损失。本文中我们介绍了如何利用解释正则表达式的优势,同时减轻其缺点。

V8 发布 v7.8

· 阅读需 7 分钟
Ingvar Stepanyan ([@RReverser](https://twitter.com/RReverser)),懒惰的源代码术士

每六周,我们会根据我们的发布流程创建一个新的 V8 分支。每个版本都是在 Chrome Beta 里程碑之前,从 V8 的 Git 主分支直接分离而来的。今天,我们很高兴宣布最新的分支V8 版本 7.8,该版本将处于 Beta 阶段,直到几周后与 Chrome 78 Stable 协同发布。V8 v7.8 包含各种面向开发者的改进。本文将预览一些亮点,以期待该版本发布。

更轻量的 V8

· 阅读需 12 分钟
Mythri Alle、Dan Elphick 和 [Ross McIlroy](https://twitter.com/rossmcilroy),V8 内存优化团队

2018 年末,我们启动了一个名为 V8 Lite 的项目,旨在显著减少 V8 的内存使用量。起初,这个项目被设想为 V8 的一种独立的 轻量模式,专门针对低内存移动设备或更注重内存使用而非吞吐执行速度的嵌入场景。然而,在进行这项工作时,我们发现许多针对这个 轻量模式 的内存优化可以迁移到常规 V8,从而让所有 V8 的用户受益。

React 中 V8 性能瓶颈的故事

· 阅读需 18 分钟
Benedikt Meurer([@bmeurer](https://twitter.com/bmeurer))和 Mathias Bynens([@mathias](https://twitter.com/mathias))

之前,我们讨论了 JavaScript 引擎如何通过使用 Shapes 和 Inline Caches 优化对象和数组的访问,并特别探讨了引擎如何加速原型属性访问。本文将描述 V8 如何为各种 JavaScript 值选择最佳的内存表示形式,以及这些选择如何影响 Shape 机制——所有这些都有助于解释React 核心中最近的一个 V8 性能瓶颈