跳至主要内容

額外內容:「理解 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。這是根據以下語法產生式的逐層簡化到最後一層:

AssignmentExpresssion 不需要具有賦值操作,它也可以僅僅是一個 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 分支。每個版本都在 Chrome Beta 里程碑之前,從 V8 的 Git 主分支中分支出來。今天,我們很高興地宣布我們最新的分支, 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?終於在經過了 超過 10 年 的努力,在我們的第 100 篇博客文章中,我們非常高興地宣布我們的最新分支 V8 版本 8.0 V8,並且我們終於可以回答這個問題:

脫離網頁:使用 Emscripten 的獨立 WebAssembly 二進位檔

· 閱讀時間約 13 分鐘
Alon Zakai

Emscripten 一直以來主要專注於編譯到 Web 和其他像是 Node.js 的 JavaScript 環境。但隨著 WebAssembly 開始被 獨立於 JavaScript 使用,新的用例正在出現,因此我們一直在努力為 Emscripten 增加支援生成 獨立 Wasm 檔案的功能,這些檔案不依賴於 Emscripten 的 JS 運行時!這篇文章將解釋為什麼這很有趣。

V8 發布 v7.9

· 閱讀時間約 5 分鐘
Santiago Aboy Solanes,指針壓縮技術專家

每六週,我們會在 發布流程中創建一個 V8 新分支。每個版本都是在 Chrome Beta 里程碑之前直接從 V8 的 Git 主分支中分支出來的。今天我們很高興宣佈我們最新的分支,V8 版本 7.9,目前處於 Beta 階段,並將在幾週後與 Chrome 79 穩定版協調發布。V8 v7.9 滿載了各種面向開發者的功能。此篇文章提供了一些亮點的預覽,以迎接正式發布。

改進 V8 正則表達式

· 閱讀時間約 7 分鐘
Patrick Thier 和 Ana Peško,對正則表達式有獨到見解的正則表達式專家

在其默認配置中,V8 在正則表達式首次執行時將其編譯為本地代碼。作為我們對JIT-less V8工作的的一部分,我們引入了一個正則表達式解釋器。解釋正則表達式的優勢是使用更少的內存,但代價是性能下降。在這篇博客文章中,我們描述了如何在減少性能損失的同時利用解釋正則表達式的優勢。

V8 發行版本 v7.8

· 閱讀時間約 7 分鐘
Ingvar Stepanyan ([@RReverser](https://twitter.com/RReverser)), 懶惰的開發者

每六週,我們會基於 發佈流程 創建一個新的 V8 分支。每個版本都是在 Chrome Beta 里程碑之前,直接從 V8 的 Git 主分支中生成。今天,我們很高興宣布最新的分支 V8 版本 7.8,該版本目前處於 Beta 階段,並將在幾週後與 Chrome 78 穩定版本一起發布。V8 v7.8 包含了許多面向開發者的功能,本文章將提前預覽部分亮點。

更輕量的 V8

· 閱讀時間約 11 分鐘
Mythri Alle、Dan Elphick 以及 [Ross McIlroy](https://twitter.com/rossmcilroy),V8 減重專家

2018 年底,我們啟動了一個名為 V8 Lite 的專案,目的是顯著減少 V8 的記憶體使用量。起初,這項專案被構想為 V8 的一個獨立 輕量模式,專門針對低記憶體的行動裝置或注重記憶體使用而非執行速度的嵌入式案例。然而,在此期間,我們意識到許多為這個 輕量模式 開發的記憶體優化技術可以應用到常規的 V8,從而讓所有 V8 的使用者受益。

在 React 中 V8 性能崖的故事

· 閱讀時間約 17 分鐘
Benedikt Meurer ([@bmeurer](https://twitter.com/bmeurer)) 和 Mathias Bynens ([@mathias](https://twitter.com/mathias))

之前,我們討論了 JavaScript 引擎如何通過使用形狀和內線快取來優化物件和數組訪問,並探索了引擎如何加速原型屬性訪問。本文敘述 V8 如何為各種 JavaScript 值選擇最佳的內存表示方式,以及這如何影響形狀機制——這有助於解釋React 核心中最近的 V8 性能崖