← 回到首頁
#JavaScript 4 篇文章
改名字換不到封裝:Python 的 __x、JavaScript 的 #x,與 minifier 在做的那件事
Python 的雙底線是編譯期的識別字改寫,JavaScript 的 # 是語言層的硬性私有,minifier 的 mangle 又是第三件事。同一個詞蓋住四種機制,而其中只有一種真的擋得住人。
#Python#JavaScript#Name Mangling#TypeScript#封裝
編譯期就擋,還是執行期才爆?Java、Python、JavaScript 的 forward reference
同樣是「先用後宣告」,Java 直接編譯失敗,Python 有時候可以有時候噴 NameError,JavaScript 則給你一個 undefined。差別不在語法,而在「名字是什麼時候被解析的」。本文以 Java 的 JLS 規則為主軸,往下對照 Python 與 JavaScript。
#Java#Python#JavaScript#Forward Reference#JLS#Hoisting#TDZ
從全域污染到 import:CommonJS 與 ESM 的由來、差別與未來
為什麼 Node 用 require,瀏覽器卻用 import?為什麼有些套件叫 .mjs,有些叫 .cjs?這些混亂的根源,是 JavaScript 模組系統一段橫跨十幾年的演進史。本文從沒有模組的年代講起,用實際程式碼對照 CommonJS 與 ESM 的差別,再說清楚為什麼 ESM 是未來。
#JavaScript#CommonJS#ESM#ES Modules#Node.js#模組系統
從 Hoisting 到 Execution Context Stack:揭開 JavaScript 執行機制的面紗
為什麼 var 可以「先用後宣告」?為什麼函式可以倒著呼叫?這些 JavaScript 看似神奇的行為,背後其實都指向同一件事:Execution Context 與它的 Stack。本文從 Hoisting 表象切入,逐層深入引擎的執行機制,搭配圖解徹底釐清。
#JavaScript#Execution Context#Call Stack#Hoisting#var#let#const