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

スポンサーリンク
JavaScript

【テクニカル・上級編】関数宣言と関数式の巻き上げ挙動の決定的な違い:ASTから読み解く解析順序 – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

関数宣言と関数式の巻き上げ挙動の決定的な違い:ASTから読み解く解析順序JavaScriptエンジニアであれば、コードの実行前に変数や関数が「巻き上げ(Hoisting)」される現象に一度は悩まされたことがあるはずだ。しかし、なぜ `fun...
JavaScript

【実務・中級編】関数宣言と関数式の巻き上げ挙動の決定的な違い:ASTから読み解く解析順序 – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

コードレビューの現場から:なぜ「その関数宣言」はバグを生むのかコードレビューをしていて、いまだに次のようなコードを見かけるたびに私は頭を抱えたくなる。// レビュー対象のコードinitializeDashboard();const init...
JavaScript

【入門編】関数宣言と関数式の巻き上げ挙動の決定的な違い:ASTから読み解く解析順序 – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

こんにちは!フロントエンドからNode.jsの内部ランタイムまで、日夜JavaScriptと向き合っているシニアアーキテクトです。今回は、JavaScriptを学び始めた誰もが一度はつまずく、そして中級者への登竜門でもある「関数宣言と関数式...
JavaScript

【テクニカル・上級編】プライベートフィールド(#)とスコープの完全隔離:クロージャを使わないカプセル化 – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

プライベートフィールド(#)とスコープの完全隔離:V8の内部構造から紐解く、クロージャを駆使したカプセル化の終焉JavaScriptにおける「カプセル化」の歴史は、そのまま言語のランタイム進化の歴史と重なる。かつて、私たちはモジュールシステ...
JavaScript

【実務・中級編】プライベートフィールド(#)とスコープの完全隔離:クロージャを使わないカプセル化 – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

コードレビューの現場から:クロージャによるカプセル化という「レガシー」フロントエンドのアーキテクチャ設計において、「隠蔽(カプセル化)」は保守性を担保する上での極めて重要な関心事だ。かつて、モダンなクラス構文がJavaScriptに定着する...
JavaScript

【入門編】プライベートフィールド(#)とスコープの完全隔離:クロージャを使わないカプセル化 – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

こんにちは!フロントエンドからNode.jsの深層まで、JavaScriptの生態系を隅々まで味わってきたフルスタックエンジニアの先輩です。今回は、JavaScriptのオブジェクト指向とデータ隠蔽(カプセル化)の歴史を塗り替えた、プライベ...
JavaScript

【テクニカル・上級編】厳格モード(use strict)が変数の宣言に与える強制力:暗黙のグローバル変数生成を阻止する – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

厳格モード(`use strict`)とV8の防壁:暗黙のグローバル変数が破壊するランタイム最適化の真実JavaScriptの歴史は、その極端な柔軟性と、それに起因する「カオス」の歴史でもある。10日で作られた言語という原罪を抱えながらも、...
JavaScript

【実務・中級編】厳格モード(use strict)が変数の宣言に与える強制力:暗黙のグローバル変数生成を阻止する – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

厳格モード(`use strict`)が変数の宣言漏れを断つ理由:V8の隠しクラスとグローバル汚染を防ぐ極限の防壁コードレビューをしていて、いまだにスクリプトの先頭に `'use strict';` が書かれていないコードベースに出くわすこ...
JavaScript

【入門編】厳格モード(use strict)が変数の宣言に与える強制力:暗黙のグローバル変数生成を阻止する – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

こんにちは!フロントエンドからNode.jsの深部まで、JavaScriptの生態系をくまなく見つめてきたチーフアーキテクトの私です。皆さんは日々のコーディングで `use strict`(厳格モード)を意識していますか?「なんとなくおまじ...
JavaScript

【テクニカル・上級編】JavaScriptの隠しクラス(Hidden Classes)と変数の型:letの再代入が最適化に与える影響 – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

V8の隠しクラスと再代入の罠:`let`がJITコンパイラを沈黙させる瞬間JavaScriptは「動的言語」であるという免罪符のもとに、私たちは長年、変数の型が変わるコードを無邪気に書いてきた。`let x = 42;` で初期化した変数に...
スポンサーリンク