スコープと変数

スコープ

グローバルスコープ ... プログラムのどこからでもアクセス可能

ローカルスコープ ... 関数スコープとブロックスコープがある

[ 関数スコープ ]

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

*変数名を付ける際は予約語に気を付けよう

テンプレートリテラル

バッククォートを使って${}の中に変数名を記述することで文字列の間に変数の値を入れることができる。

`文字の間に${変数名}で変数の値を追加できる`