実行コンテキスト②
コンテキストとは?
コードが実行する時の文脈・状況 どんな状況で実行されているのか。。。
コードが実行されている状態によってコンテキストが変わってくるので、実行コンテキストと表現されています。
実行コンテキストは3種類あります!
- グローバルコンテキスト
- 宣言された変数・関数(グローバルコンテキスト内で)
- グローバルオブジェクト
- this
関数コンテキスト
- 宣言された変数・関数(関数コンテキスト内で)
- arguments
- this
- super(特殊な環境でのみ使用可能)
- 外部変数
evalコンテキスト
※ evalコンテキストはeval関数が非推奨なのでvarと同じくもう使わない傾向にあるそうです(><)ノ
参照
ちょっとサンプルコード書いてみます(ノ><)ノ
ちょっとわかりにくかったらすみません( ;ω; )
上がエディタ上で書いたコードで、下が実際に実行したconsoleの結果です!
何もブロックされていないとこに書かれてるのがグローバルコンテキストで、宣言された関数の{}の中に書かれているのが関数コンテキストで、関数コンテキストから見て、let foo や const foobar は外部変数になります。
関数コンテキストの外で定義されていますが、関数bar内でも使用することができます(><)ノ