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

スポンサーリンク
JavaScript

【テクニカル・上級編】クロージャとスコープチェーンのメモリリーク:letで解決する循環参照の罠 – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

クロージャとスコープチェーンのメモリリーク:letが書き換えたV8ガベージコレクションの物理法則JavaScriptのランタイムにおいて、「クロージャ(Closure)」と「スコープチェーン」は、言語の表現力を無限に広げた最大の功績であると...
JavaScript

【実務・中級編】クロージャとスコープチェーンのメモリリーク:letで解決する循環参照の罠 – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

はじめに:コードレビューの現場から「なぜ、このSPA(シングルページアプリケーション)は画面遷移を繰り返すたびにメモリ使用量が右肩上がりに増え続けるのか?」テックリードとしてコードレビューを行っていると、今だにこの悪夢のような問いに直面する...
JavaScript

【入門編】クロージャとスコープチェーンのメモリリーク:letで解決する循環参照の罠 – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

こんにちは!JavaScriptの世界へようこそ。フロントエンドの裏側からNode.jsのランタイムまで、日々JavaScriptと向き合っていると、「動くけれど、なぜかメモリがじわじわと削られていく……」という不気味な現象に出会うことがあ...
JavaScript

【テクニカル・上級編】なぜ現代のJavaScript開発でvarを禁止すべきなのか:スコープ汚染が引き起こすバグの再現実験 – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

varという名の時限爆弾:V8ヒープの汚染とスコープ崩壊のメカニズムJavaScriptエンジニアとしてキャリアを積んできた者であれば、`var` がいかに邪悪な遺物であるかを一度は耳にしたことがあるはずだ。しかし、「なぜ使ってはいけないの...
JavaScript

【実務・中級編】なぜ現代のJavaScript開発でvarを禁止すべきなのか:スコープ汚染が引き起こすバグの再現実験 – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

エンジニアの皆さん、コードレビューの場で「なぜまだ `var` を使っているのか?」と問いただす側になっていないだろうか。現代のJavaScript開発において、`var` の使用は百害あって一利なしだ。ES2015(ES6)の黎明期から幾...
JavaScript

【入門編】なぜ現代のJavaScript開発でvarを禁止すべきなのか:スコープ汚染が引き起こすバグの再現実験 – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

こんにちは!フロントエンドからNode.jsのランタイム内部まで、JavaScriptの生態系をくまなく見渡してきたチーフアーキテクトの私です。みなさんは日々のコーディングで、変数の宣言に何を使っていますか?「なんとなく `const` を...
JavaScript

【テクニカル・上級編】varの巻き上げとTDZの正体:JavaScriptエンジンがコードを解釈する2つのフェーズ – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

varの巻き上げとTDZの正体:JavaScriptエンジンがコードを解釈する2つのフェーズJavaScriptエンジンの内部で何が起きているのか。その問いに向き合わずして、現代の大規模フロントエンドや高スループットなNode.jsバックエ...
JavaScript

【実務・中級編】varの巻き上げとTDZの正体:JavaScriptエンジンがコードを解釈する2つのフェーズ – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

序章:コードレビューの現場から「なぜ、このコードは初期化前にアクセスしてエラーになるはずなのに、`undefined`を吐き出してサイレントバグを引き起こしているんだ?」プルリクエストのレビュー中、ジュニアエンジニアが書いた旧態依然とした`...
JavaScript

【入門編】varの巻き上げとTDZの正体:JavaScriptエンジンがコードを解釈する2つのフェーズ – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

こんにちは!日々の開発、本当にお疲れ様です。JavaScriptを書き始めた頃、「あれ、変数を宣言したはずなのに、なぜか `undefined` になるぞ?」「いや、今度は `ReferenceError` で怒られたぞ……?」と首を傾げた...
スポンサーリンク