0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[ Java Script 入門 ] グローバルスコープとスクリプトスコープは同じものなのか?

Posted at

##グローバルスコープとスクリプトスコープ 

let a = 0;
var b = 0;
function c() {}
debugger;

これらを定義し、ブラウザ上で検証をぶちかます。
debuggerはブラウザを開いていると、この時点に達すると処理が止まる。)
検証のSources内、Command + R で更新。

Script
a: 0  

           
Global                Window
PERSISTENT: 1
TEMPORARY: 0
addEventListener: ƒ addEventListener()
alert: ƒ alert()
atob: ƒ atob()
b: 0
blur: ƒ blur()
btoa: ƒ btoa()
c: ƒ c()

Scope内にこのように表示された。  
これがdebuggerから見える変数ということになる!

##グローバルスコープとは?

Sources内の結果からわかるように、VarやFunctionで定義した際は、Globalの Windowオプションにプロパティーとして保持される。

##スクリプトスコープとは?
letやconstにて宣言をとるとスクリプトの方に保持される

##windowオブジェクト自体がグローバルスコープ?

console.log(window.b);
を
console.log(b);と省略しても取得する値は変わらない。

ってことは、windowオブジェクト自体がグローバルスコープなんだ:hand_splayed:

なので

window.d = 1;
console.log(d);

すると、d = 1はグローバルスコープに追加されているので、コンソール上には1が表示される:hand_splayed:

使い勝手ではグローバルスコープもスクリプトスコープも変わらない

ただ、

window.d = 1;
let d = 2;
console.log(d);

とすると2が表示される。これはスコープチェーンによるもの!

##まとめ

一般的には、スクリプトスコープもグローバルスコープと呼ばれるとのこと。 ただ、スコープチェーンによる挙動の変化があるので、別のスコープであるという考え方は大切になる!

0
0
6

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?