facebookarchive/prepack

Lexical declarations in top-level lexical scope are omitted

開放

#1,905 建立於 2018年5月8日

 (3 則留言) (1 個反應) (0 位負責人)JavaScript (520 個分叉)batch import
bughelp wantedlevel 2 (easy)serializer

倉庫指標

星標
 (14,268 顆星)
PR 合併指標
 (30 天內沒有已合併 PR)

描述

const f = 0; is considered by Prepack to be totally dead. But it's not: the top-level lexical scope is shared across scripts, just below the global scope. So while that may not be a global declaration, in that it does not create a property of the global object, it is available to other code on the page just as if it had been var instead of const; other scripts can write console.log(f) to print 0. In that sense it is not safe to eliminate.

This may or may not be a bug, depending on your perspective. I'm just not sure what things prepack considers dead: { const f = 0; } definitely is, var f = 0; definitely isn't, but this is kind of in-between.

貢獻者指南