変数とスコープ(const, let, var, ブロックスコープ, 巻き上げ)

スポンサーリンク
JavaScript

【テクニカル・上級編】 eval関数がスコープに与える影響 – JavaScript実践ガイド

JavaScriptの「禁忌」:evalが引き起こすスコープ汚染の深淵とアーキテクチャへの代償現場でコードレビューをしていると、稀に「なぜここで`eval`を使っているのか?」と問い詰めたくなる実装に出くわすことがある。フロントエンドのアー...
JavaScript

【テクニカル・上級編】 モジュールスコープとトップレベルの環境 – JavaScript実践ガイド

グローバル汚染を断つ:ES Modulesにおけるトップレベルスコープの真実フロントエンドのアーキテクチャを語る上で、私たちは長年「いかにしてグローバルスコープをクリーンに保つか」という泥沼の戦いを繰り広げてきました。かつてはIIFE(即時...
JavaScript

【テクニカル・上級編】 関数環境レコードとthisバインディング – JavaScript実践ガイド

関数環境レコードの深淵:`this`と`super`が支配するメモリの裏側フロントエンドのアーキテクチャを設計する際、私たちはしばしば「なぜこの関数で`this`がロストするのか」という古典的な問いに直面します。しかし、単に「アロー関数を使...
JavaScript

【テクニカル・上級編】 グローバルオブジェクトとグローバル環境レコード – JavaScript実践ガイド

グローバルオブジェクトの「深淵」を覗く:`var`、`window`、そして環境レコードの非対称性フロントエンドのアーキテクトとして多くのコードベースを渡り歩いてきたが、いまだに「なぜグローバルスコープで `var` を使うと `windo...
JavaScript

【テクニカル・上級編】 変数オブジェクト(VO)と環境レコードの変遷 – JavaScript実践ガイド

幽霊を追い出す技術:JSエンジンにおける「変数」の進化とメモリ最適化の深淵JavaScriptを単なる「ブラウザで動く接着剤」だと思っているなら、今すぐその認識を捨てたほうがいい。かつてネットスケープの片隅で生まれたこの言語は、今やV8やS...
JavaScript

【テクニカル・上級編】 クロージャの内部メカニズムとメモリ保持 – JavaScript実践ガイド

クロージャの深淵:メモリの呪縛と、ガベージコレクションを飼い慣らす技術JavaScriptという言語において、クロージャは最も強力であり、同時に最も「事故」を誘発しやすい二面性を持つ機能だ。多くの初学者は「関数が外側の変数を覚えている魔法」...
JavaScript

【テクニカル・上級編】 外部環境参照とスコープチェーンの解決プロセス – JavaScript実践ガイド

スコープチェーンという名の「迷宮」を解く:V8エンジンが見ている風景フロントエンドのアーキテクトとして長年コードをレビューしていると、「スコープ」を単なる「変数の有効範囲」としか捉えていないエンジニアがいかに多いかに驚かされる。しかし、大規...
JavaScript

【テクニカル・上級編】 レキシカル環境と環境レコードの内部構造 – JavaScript実践ガイド

JavaScriptの深淵:レキシカル環境と「見えない変数」の正体多くのエンジニアが `const` や `let` を「なんとなく」使い分けているが、現場で発生する不可解なメモリリークや、非同期処理におけるクロージャのバグを根本から叩き潰...
JavaScript

【テクニカル・上級編】 実行コンテキストスタックとコールスタックの仕組み – JavaScript実践ガイド

実行コンテキストの深淵へ:JavaScriptエンジンが「文脈」を管理する裏側の話フロントエンドのアーキテクトとして多くのコードベースを渡り歩いてきたが、シニアクラスのエンジニアでも「なぜ今のコードがその変数を参照できるのか?」という問いに...
JavaScript

【テクニカル・上級編】 変数のライフサイクル(生成・初期化・代入) – JavaScript実践ガイド

変数のライフサイクルを制御せよ:JavaScriptエンジンが隠蔽する「一時的死域(TDZ)」の深淵フロントエンドの戦場において、我々が書く数行のコードは、単なる命令ではない。それはV8やSpiderMonkeyといったブラウザエンジンへの...
スポンサーリンク