React 速習チュートリアル

React ES6 変数

1. 変数 (Variables)

ES6 以前は、変数(Variables)を定義する方法は var キーワードの 1 つだけでした。変数を定義しなかった場合、それらはグローバルオブジェクトに割り当てられていました。ただし、ストリクトモード(Strict mode)を使用している場合は、定義されていない変数を使用するとエラーになります。

現在、ES6 では varletconst の 3 つの変数定義方法があります。

2. var

var x = 5.6;
  • 関数の外で var を使用すると、それはグローバルスコープ(Global scope)に属します。
  • 関数の中で var を使用すると、その変数スコープはその関数内に限定されます。
  • ブロック(例:for ループなど)の中で var を使用しても、その変数はブロックの外側から引き続きアクセス可能です。

つまり、var は関数スコープ(Function scope)を持ち、ブロックスコープ(Block scope)を持ちません。

3. let

let x = 5.6;

letvarブロックスコープ版であり、定義されたブロック(または式)内に限定されます。

ブロック(例:for ループなど)の中で let を使用すると、その変数はそのループ内でのみ有効です。letブロックスコープを持ちます。

4. const

const x = 5.6;

const は、一度作成されると、その値を変更(再代入)することができない変数です。constlet と同様にブロックスコープを持ちます。

ただし、const というキーワードは少し誤解を招きやすい側面があります。これは「不変の値」を定義するのではなく、値への「不変の参照(Constant reference)」を定義するものです。

そのため、以下の操作はできません

  • 定数値の再代入
  • 定数配列(Array)の再代入
  • 定数オブジェクト(Object)の再代入

しかし、以下の操作は可能です。

  • 定数配列の要素を変更する
  • 定数オブジェクトのプロパティを変更する

4.1 コード例:const の挙動

// 配列の例
const cars = ["サアブ", "ボルボ", "BMW"];

// 要素の変更は可能
cars[0] = "トヨタ";

// 要素の追加も可能
cars.push("アウディ");

// しかし、配列自体の再代入は不可
// cars = ["トヨタ", "ボルボ", "BMW"]; // エラーになります