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

スポンサーリンク
JavaScript

【入門編】constの不変性とメモリレイアウト:ヒープ上のオブジェクト参照とスタック上のポインタの真実 – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

こんにちは!フロントエンドからNode.jsの深部まで、JavaScriptの生態系をくまなく愛するチーフアーキテクトです。今回は、JavaScriptを学び始めた誰もが一度は「えっ、どういうこと?」と立ち止まる、`const`の不変性(イ...
JavaScript

【テクニカル・上級編】varの巻き上げを「バグ」ではなく「仕様」として理解する:関数宣言と変数宣言のAST解析順序 – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

varの巻き上げを「バグ」ではなく「仕様」として理解する:AST解析とEnvironment Recordの物理的実態JavaScriptの歴史的遺物として語られがちな `var`。シニアエンジニアやセキュリティリセーチャであれば、「`va...
JavaScript

【実務・中級編】varの巻き上げを「バグ」ではなく「仕様」として理解する:関数宣言と変数宣言のAST解析順序 – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

varの巻き上げを「バグ」ではなく「仕様」として理解する:AST解析とEnvironment Recordの深層コードレビューをしていると、今だに `var` を見かけて顔をしかめるシーンに出くわすことがある。「`var` は巻き上げ(Ho...
JavaScript

【入門編】varの巻き上げを「バグ」ではなく「仕様」として理解する:関数宣言と変数宣言のAST解析順序 – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

こんにちは!JavaScriptのコアな仕組みへようこそ。フロントエンドの画面描画からNode.jsのサーバーサイドまで、JavaScriptという言語の鼓動を感じながら日々コードを書いていると、「あれ、変数や関数って、どうして宣言する前に...
JavaScript

【テクニカル・上級編】ブロックスコープのメモリ管理:forループ内のletが生成する「レキシカル環境」のクローンとガベージコレクションの挙動 – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

V8エンジンの深淵:forループにおける `let` のレキシカル環境クローンとGCのライフサイクルJavaScriptのランタイム、特にGoogle ChromeやNode.jsの心臓部であるV8エンジンにおいて、変数の宣言方法ひとつがメ...
JavaScript

【実務・中級編】ブロックスコープのメモリ管理:forループ内のletが生成する「レキシカル環境」のクローンとガベージコレクションの挙動 – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

コードレビューをしていて、未だに以下のようなコードを見かけるたびに私は頭を抱えたくなる。// 【アンチパターン】varが生んだ歴史的呪物for (var i = 0; i < 3; i++) { setTimeout(() => conso...
JavaScript

【入門編】ブロックスコープのメモリ管理:forループ内のletが生成する「レキシカル環境」のクローンとガベージコレクションの挙動 – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

こんにちは!フロントエンドからNode.jsの内部挙動まで、日夜JavaScriptと向き合っているシニアアーキテクトです。今回は、JavaScriptの変数宣言(`let`)と、ループ処理の組み合わせが生み出す「ブロックスコープとメモリ管...
JavaScript

【テクニカル・上級編】変数の初期化フェーズにおけるTDZの検知メカニズム:V8エンジンはどうやって未初期化アクセスを弾いているのか – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

V8エンジンの内部構造から読み解くTDZ(一時的死域)の真実:未初期化変数はどうやって検知されているのかJavaScriptの仕様において、`let`や`const`で宣言された変数がスコープの先頭から実際の宣言文に到達するまでの間にアクセ...
JavaScript

【実務・中級編】変数の初期化フェーズにおけるTDZの検知メカニズム:V8エンジンはどうやって未初期化アクセスを弾いているのか – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

V8エンジンの内部から暴くTDZ(一時的死域)の正体:なぜ `let`/`const` の未初期化アクセスは即座に検知されるのかコードレビューをしていて、次のようなコードに遭遇したことはないだろうか。// レビュー対象コードconst us...
JavaScript

【入門編】変数の初期化フェーズにおけるTDZの検知メカニズム:V8エンジンはどうやって未初期化アクセスを弾いているのか – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

こんにちは!フロントエンドからNode.jsの深層まで、日夜JavaScriptと向き合っているシニアアーキテクトです。今回は、JavaScriptの変数宣言において避けて通れない、しかし多くの開発者がなんとなくで見過ごしがちな「TDZ(一...
スポンサーリンク