スコープと変数
スコープ
グローバルスコープ ... プログラムのどこからでもアクセス可能
ローカルスコープ ... 関数スコープとブロックスコープがある
[ 関数スコープ ]
functionごとに作られるスコープ。 関数スコープ内で変数宣言(var,let,const)をすると関数の外からはアクセスできず関数内でのみ利用可能なローカル変数となる。
[ ブロックスコープ ]
波括弧{}ごとに作られるスコープ。ブロックスコープ内でlet,constで変数宣言すると、ブロックの外からはアクセスできずブロック内でのみ利用可能なローカル変数となる。
var a = 0; let b = 1; const c = 2; { document.write(a, b, c); // 012と表示される var d = 3; let e = 4; const f = 5; } document.write(d); // 3と表示される document.write(e); // ReferenceError document.write(f); // ReferenceError
変数var,let,const
再宣言 | 再代入 | 関数スコープ | ブロックスコープ | |
---|---|---|---|---|
var | 可 | 可 | 適応 | 無視 |
let | 不可 | 可 | 適応 | 適応 |
const | 不可 | 不可 | 適応 | 適応 |
再宣言の例)
var a = 0; let b = 1; const c = 2; var a = 3; document.write(a); // 3と表示 let b = 4; document.write(b); // SyntaxError const c = 5; document.write(c); // SyntaxError
再代入の例)
var a = 0; let b = 1; const c = 2; a = 3; document.write(a); // 3と表示 b = 4; document.write(b); // 4と表示 c = 5; document.write(c); // TypeError
ブロックスコープでの変数の反応例)
{ var a = 0; let b = 1; const c = 2; } document.write(a); // 0 document.write(b); // ReferenceError document.write(c); // ReferenceError
*変数名を付ける際は予約語に気を付けよう
テンプレートリテラル
バッククォートを使って${}の中に変数名を記述することで文字列の間に変数の値を入れることができる。
`文字の間に${変数名}で変数の値を追加できる`