【JavaScript入門】定数と変数の宣言(let,var,constを知ろう)

JavaScript入門JavaScript, 入門

JavaScript

JavaScriptで「定数」と「変数」を宣言する

定数と変数とは?

「数」とついていますが、「数値」以外にも「文字列」なども扱えます。

定数(ていすう)

「値が変わらない(変えられない)」データの入れ物(箱)を指します。

変数(へんすう)

「値が変わる(変えられる)」データの入れ物(箱)を指します。

 

関連キーワードを覚えよう!

宣言(せんげん)

定数や変数を「使います!」と表すことです。

宣言をしないと、定数も変数も利用することができません。

再宣言(さいせんげん)

宣言された「変数」を、再度「宣言」することをいいます。

あまり利用するシーンは無いので、言葉だけ覚えておきましょう。

代入(だいにゅう)

宣言された「変数」に対して、値を「変更」する操作を指します。

参照(さんしょう)

宣言された「定数」「変数」の値を使う操作を指します。

変数名、定数名(へんすうめい、ていすうめい)

宣言時に自分で決められる「変数の名前」「定数の名前」を指します。

変数や定数を参照する場合、「変数名」「定数名」を指定します。

値(あたい)

「定数」や「変数」のデータの中身を指します。

 

JavaScriptで変数、定数を宣言するには?

「const」「let」「var」のいづれかを利用して宣言します。

const(コンスト)

定数を宣言するときに利用します。

let(レット)

変数を宣言するときに利用します。

var(バー)

変数を宣言するときに利用します。

 

letとvarの違いって何?

大きくわけると2つの違いがあります。

再宣言の可不可

「let」は再宣言ができませんが、「var」は再宣言ができます。

「再宣言ができない」というのは、ネガティブに聞こえるかもしれませんが、

コーディングミスの予防になるので、ポジティブな言葉と捉えましょう!

スコープの範囲

スコープとは、「変数や定数を参照できる範囲」です。

プログラムには、「ブロック」と呼ばれる範囲があります。

JavaScriptでは、「{}」を1ブロックと考えます。

特に「function XXX() {}」の「{}」は、

ブロックの中でも、「関数ブロック」と呼びます。

この「関数ブロック」の中で、色々な処理(宣言も1つの処理です)を行います。

 

「let」は、「宣言したブロック」がスコープです。

「var」は、スコープが広く「宣言したブロックを含む関数ブロック」がスコープです。

 

ソースコード

「//」以降は、コメントです。

コメントの文字通り、処理に影響しない記述です。

// 宣言、再宣言、代入、参照を見てみよう!

// const
const TEISU = "sample1";   // 宣言 :OK
const TEISU = "sample2";   // 再宣言:ERROR
TEISU = "sample3";         // 代入 :ERROR
console.log(TEISU);        // 参照 :OK

// let
let hensu_let = "sample1"; // 宣言 :OK
let hensu_let = "sample2"; // 再宣言:ERROR
hensu_let = "sample3";     // 代入 :OK
console.log(hensu_let);    // 参照 :OK

// var
var hensu_var = "sample1"; // 宣言 :OK
var hensu_var = "sample2"; // 再宣言:OK
hensu_var = "sample3";     // 代入 :OK
console.log(hensu_var);    // 参照 :OK
// letのスコープを確認してみよう!

// letのスコープを確認する処理
function chkLetScope() {
  // 変数を宣言します。
  let hensu = "hello world";
  // 宣言した変数を参照して、値を確認します。
  console.log(hensu); // 値:hello world
  for (let i = 0; i < 2; i++) {
    // ブロックが異なるため再宣言ではなく「宣言」です。
    let hensu = "the world";
    // 宣言した変数を参照して、値を確認します。
    console.log(hensu); // 値:the world
  }
  // 再度、値を確認します。
  console.log(hensu); // 値:hello world
}

// letのスコープを確認する処理を呼び出します。
chkLetScope();
// varのスコープを確認してみよう!

// varのスコープを確認する処理
function chkVarScope() {
  // 変数を宣言します。
  var hensu = "hello world";
  // 宣言した変数を参照して、値を確認します。
  console.log(hensu); // 値:hello world
  for (var i = 0; i < 2; i++) {
    // ブロックが異なるため再宣言ではなく「宣言」です。
    var hensu = "the world";
    // 宣言した変数を参照して、値を確認します。
    console.log(hensu); // 値:the world
  }
  // 再度、値を確認します。
  console.log(hensu); // 値:the world
}

// varのスコープを確認する処理を呼び出します。
chkVarScope();

最後に

定数は「const」、変数は「let」を使うことを推奨します。

varだと、同じ変数を再宣言してしまったり、

別ブロックの処理の途中で、値が書き換わったことに気づかず、

 「あれれ~?」「おかしいぞ~」

とならないようにする工夫だと思ってください。

 

性能面や拡張性など「色々な事を検討して決めるべきなので」、

必ず「こうしなければならない」ということはありません。

スポンサーリンク