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

スポンサーリンク
JavaScript

【実務・中級編】プロトタイプ汚染と変数のスコープ:グローバル変数が引き起こすセキュリティリスクの防御策 – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

コードレビュー:そのグローバル変数、本当に「安全」と言い切れますか?レガシーなスクリプト、あるいは焦燥感に駆られた開発の過程で、ついやってしまいがちなのが「とりあえずグローバルスコープに置く」という実装だ。「関数間でデータを共有したい」「設...
JavaScript

【入門編】プロトタイプ汚染と変数のスコープ:グローバル変数が引き起こすセキュリティリスクの防御策 – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

こんにちは!フロントエンドからNode.jsの深部まで、JavaScriptの生態系を知り尽くしたチーフアーキテクトの私です。今回は、JavaScriptの学習において誰もが一度は通り過ぎるけれど、実はプロの現場でも命取りになる極めて危険な...
JavaScript

【テクニカル・上級編】関数スコープをエミュレートするIIFEの過去と現在:let/const登場後の役割の変化 – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

IIFEの黄昏と新生:V8最適化とブロックスコープ時代の関数スコープエミュレーションJavaScriptの言語進化の歴史を振り返るとき、最も劇的なパラダイムシフトの一つは、ES2015(ES6)における `let` と `const` の導...
JavaScript

【実務・中級編】関数スコープをエミュレートするIIFEの過去と現在:let/const登場後の役割の変化 – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

はじめに:IIFEの「死」と「復活」コードレビューをしていると、未だに「とりあえず関数スコープを作っておこう」という惰性で、現代のコードベースにIIFE(即時実行関数式)をねじ込んでいるコードを見かけることがある。// 【アンチパターン】現...
JavaScript

【入門編】関数スコープをエミュレートするIIFEの過去と現在:let/const登場後の役割の変化 – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

こんにちは!日々の開発、本当にお疲れ様です。JavaScriptを書き始めたばかりの頃って、変数の動きやスコープ(変数がどこから見えるかという範囲)のルールに戸惑うこと、よくありますよね。「あれ? なんでさっき宣言した変数が見当たらないんだ...
JavaScript

【テクニカル・上級編】変数の名前解決コストを最小化する:V8の「コンテキストキャッシュ」と最適化の仕組み – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

変数の名前解決コストを最小化する:V8の「コンテキストキャッシュ」と最適化の仕組みJavaScriptの実行エンジン、特にGoogleのV8は、かつての「おもちゃのスクリプト言語」をC++ネイティブコードに匹敵する速度へと押し上げた。JIT...
JavaScript

【実務・中級編】変数の名前解決コストを最小化する:V8の「コンテキストキャッシュ」と最適化の仕組み – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

コードレビューをしていると、いまだに「スコープが広い変数や深いクロージャを多用しても、パフォーマンスには大差ない」と誤解しているエンジニアに遭遇する。あるいは、「ネストした関数の中で変数を参照しても、どうせ一瞬で解決されるだろう」と高を括っ...
JavaScript

【入門編】変数の名前解決コストを最小化する:V8の「コンテキストキャッシュ」と最適化の仕組み – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

こんにちは!フロントエンドからNode.jsの深層まで、JavaScriptのすべてを愛するチーフアーキテクトの先輩です。今回は、JavaScriptの基本中の基本でありながら、実はエンジニアの腕の見せ所でもある「変数」のお話です。特に、変...
JavaScript

【テクニカル・上級編】モジュールスコープとグローバルスコープの境界:ブラウザのscriptタグとES Modulesのメモリ空間の違い – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

モジュールスコープとグローバルスコープの境界:ブラウザのscriptタグとES Modulesのメモリ空間の物理的実態JavaScriptの実行モデルは、長年にわたる仕様の拡張とともに「いかにしてグローバル汚染を防ぎ、モジュール性を担保する...
JavaScript

【実務・中級編】モジュールスコープとグローバルスコープの境界:ブラウザのscriptタグとES Modulesのメモリ空間の違い – JavaScriptコア文法・モダン言語仕様と変数・関数解析バイブル

コードレビューをしていて、未だに散見される悪夢がある。グローバルスコープを汚染し、意図せぬ変数の上書きによって引き起こされる、再現性の低い偶発的なバグだ。「なぜ動かないのか分からない」「別ファイルのスクリプトで書き換わっている」。モダンなフ...
スポンサーリンク