変数の宣言(var / let / const)とスコープ・巻き上げのメカニズム

スポンサーリンク
JavaScript

【実務・中級編】関数宣言の巻き上げと変数宣言の巻き上げ:AST(抽象構文木)生成フェーズにおける優先順位の決定プロセス – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

コードレビューをしよう。君が提出したそのプルリクエスト、動くには動くだろう。だが、本当にその挙動をコントロールできているか? 「なぜか `undefined` が返ってくる」「別のスコープで定義したはずの変数が上書きされている」——こうした...
JavaScript

【入門編】関数宣言の巻き上げと変数宣言の巻き上げ:AST(抽象構文木)生成フェーズにおける優先順位の決定プロセス – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

こんにちは!フロントエンドからNode.jsの深層まで、日々のコードに魂を込めているエンジニアのあなたへ。今回は、JavaScriptの挙動において誰もが一度はハマる、そして中級者への扉を開くための最重要テーマ「変数と関数宣言の巻き上げ(H...
JavaScript

【テクニカル・上級編】なぜループ内のlet宣言は「ブロックスコープのクローン」を生成するのか:メモリ消費とガベージコレクションの挙動 – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

なぜループ内のlet宣言は「ブロックスコープのクローン」を生成するのか:メモリ消費とガベージコレクションの挙動JavaScriptの言語仕様がES2015(ES6)で`let`と`const`を獲得した日、我々フロントエンド・バックエンドを...
JavaScript

【実務・中級編】なぜループ内のlet宣言は「ブロックスコープのクローン」を生成するのか:メモリ消費とガベージコレクションの挙動 – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

なぜループ内のlet宣言は「ブロックスコープのクローン」を生成するのか:V8のメモリ空間とGCの深層コードレビューをしていて、未だに以下のようなコードを見かけることがある。// よくあるアンチパターン:varによるループとクロージャの組み合...
JavaScript

【入門編】なぜループ内のlet宣言は「ブロックスコープのクローン」を生成するのか:メモリ消費とガベージコレクションの挙動 – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

こんにちは!フロントエンドからV8エンジンの内部挙動まで、日夜JavaScriptと向き合っているシニアアーキテクトです。今回は、JavaScriptの基本中の基本でありながら、その裏側ではV8エンジンが驚くほど緻密なメモリ管理を行っている...
JavaScript

【テクニカル・上級編】TDZ(一時的死域)の低レイヤ実装:JavaScriptエンジンが未初期化変数を検知する際のフラグ管理 – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

TDZ(一時的死域)の低レイヤ実装:V8エンジンが未初期化変数を検知するメカニズムの深層JavaScriptの進化は、言語仕様の抽象レイヤーを引き上げると同時に、ランタイムエンジンの内部実装との距離をかつてないほど緊密にした。`let` と...
JavaScript

【実務・中級編】TDZ(一時的死域)の低レイヤ実装:JavaScriptエンジンが未初期化変数を検知する際のフラグ管理 – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

コードレビューの最中、こんなコードを見かけて冷や汗をかいたことはないだろうか。// レビュー対象コードconst instance = new MyService();const CONFIG = { TIMEOUT: 5000, RETR...
JavaScript

【入門編】TDZ(一時的死域)の低レイヤ実装:JavaScriptエンジンが未初期化変数を検知する際のフラグ管理 – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

こんにちは!フロントエンドからNode.jsの内部挙動まで、日々JavaScriptと向き合っているシニアエンジニアです。今回は、JavaScriptの変数宣言において避けて通れない、かつ少しディープなテーマ「TDZ(一時的死域:Tempo...
JavaScript

【テクニカル・上級編】V8エンジンのEnvironment Record:letとconstがスタック上に確保される仕組みとvarとのメモリレイアウト比較 – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

V8エンジンのEnvironment Record:let/constとvarのメモリレイアウト比較JavaScriptエンジンの内部構造に踏み込むことなく大規模なコードベースを設計することは、燃料噴射のメカニズムを知らずに高性能なF1マシ...
JavaScript

【実務・中級編】V8エンジンのEnvironment Record:letとconstがスタック上に確保される仕組みとvarとのメモリレイアウト比較 – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

変数宣言の裏側で何が起きているのか? V8エンジンが暴く `var` と `let`/`const` のメモリレイアウトの真実コードレビューをしていると、未だに「`var`を使っても動くし、何が違うのか分からない」というエンジニアに遭遇する...
スポンサーリンク