IT・テクノロジー

【オウル先生の基礎講座】Vol.1「変数と定数の違い」

progmraming

プログラミングの基本、変数と定数について解説します!

なぜ変数と定数の2種類があるの?違いがよく分からないなぁ…
フォックン
フォックン
いい質問だね、フォックン!変数は値が変わるもの、定数は一度決めたら変えられないものなんだ。使い分けを理解すると、より安全で読みやすいコードが書けるようになるよ😊
オウル先生
オウル先生

変数と定数の基本概念

変数(Variable)とは

変数は、値を入れておく箱のようなものです。その箱の中身は、必要に応じて何度でも変更できます。

let age = 25;     // ageという箱に25を入れる
age = 26;         // 箱の中身を26に変更
console.log(age); // 26と表示される

定数(Constant)とは

定数は、一度値を設定したら変更できない箱です。初期化時に設定した値は固定されます。

const PI = 3.14159;  // PIという箱に円周率を入れる
PI = 3.14;           // エラー!定数は変更できない
なるほど!変数は何度でも変えられるけど、定数は最初に決めた値から変えられないんだね
フォックン
フォックン

JavaScriptにおける宣言方法

JavaScriptでは以下の3つの方法で変数や定数を宣言できます:

キーワード用途再代入スコープ
let変数宣言可能ブロックスコープ
const定数宣言不可ブロックスコープ
var変数宣言(非推奨)可能関数スコープ
// モダンなJavaScriptの推奨パターン
let userName = "Alice";      // ブロックスコープの変数
const API_KEY = "abc123";    // ブロックスコープの定数

// 非推奨パターン(互換性のために残されている)
var oldStyle = "legacy";     // 関数スコープの変数
現在のJavaScript開発では、letconstを使うのが一般的だよ。varは昔の記法で、思わぬバグを引き起こす可能性があるから注意が必要なんだ。
オウル先生
オウル先生

使い分けのガイドライン

constを使うべきケース

  • 設定値や定数として扱いたい値
const MAX_RETRIES = 3;
const API_ENDPOINT = 'https://api.example.com';
  • 初期化後に変更する必要がない値
const userProfile = { name: 'Bob', age: 30 };
const colors = ['red', 'green', 'blue'];
  • 関数や矢印関数
const calculateTotal = (price, tax) => { return price * (1 + tax); };

letを使うべきケース

  • 値が変化する可能性がある変数
let counter = 0; let isLoggedIn = false;
  • ループやカウンターなど、明示的に変更が必要な場合
for (let i = 0; i < 10; i++) { console.log(i); }
じゃあ、基本的にはconstを使って、本当に値が変わる必要がある時だけletを使えばいいんだね!
フォックン
フォックン
その通り!「Constファースト」の考え方なんだ。これにより、コードの意図が明確になり、予期しない値の変更を防ぐことができるよ。
オウル先生
オウル先生

スコープについて理解しよう

スコープとは、変数や定数がアクセス可能な範囲のことです。

ブロックスコープ(let, const)

function example() {
  if (true) {
    let blockVariable = 'これはブロック内でのみ有効';
    const blockConstant = '同じくブロック内でのみ有効';
  }
  
  // ここではblockVariableとblockConstantにアクセスできない
  console.log(blockVariable); // エラー!
}

関数スコープ(var)

function legacyExample() {
  if (true) {
    var functionVariable = 'これは関数内のどこからでもアクセス可能';
  }
  
  console.log(functionVariable); // '関数内なのでアクセス可能'
}
varを使うと予期しない動作が発生する可能性があるため、現在はletconstのブロックスコープの方が安全で推奨されているんだ。
オウル先生
オウル先生

実践的な使用例

適切な使用例

// ユーザー情報管理システム
const MAX_LOGIN_ATTEMPTS = 5;  // 変更されない設定値

let loginAttempts = 0;         // カウントとして使用(値が変わる)
let isLocked = false;          // ログイン状態(値が変わる)

const user = {
  name: 'Alice',
  email: 'alice@example.com'
};

// オブジェクトの値は変更可能(オブジェクト自体は再代入不可)
user.name = 'Alice Johnson';   // OK
user.lastLogin = new Date();   // OK(新しいプロパティ追加)

// user = {};                  // これはエラー!
constで宣言したオブジェクトの中身は変更できるんだね!混乱しそうだな…
フォックン
フォックン
その通り!constは変数自体の再代入を防ぐだけで、オブジェクトや配列の中身の変更は可能なんだ。この違いをしっかり理解しておくことが大切だね😊
オウル先生
オウル先生

よくある誤解と注意点

誤解その1:constはイミュータブル

const person = { name: 'Tom' };
person.name = 'Thomas';    // これは可能!
person.age = 25;           // これも可能!

// オブジェクトを完全に固定したい場合
const frozenPerson = Object.freeze({ name: 'Tom' });
frozenPerson.name = 'Thomas';  // 無視される(Strictモードではエラー)

誤解その2:var、let、constの混在

// 非推奨:同じ変数名での再宣言
var x = 10;
var x = 20;    // OK(varは再宣言可能)

let y = 10;
let y = 20;    // エラー!(ブロック内で再宣言不可)

// 推奨:適切な宣言方法の選択
const CONFIG = {...};
let dynamicValue = 0;

まとめ

  1. 変数(let):値が変化する可能性がある場合に使用
  2. 定数(const):値が固定的で変更する必要がない場合に使用
  3. Constファーストの原則:デフォルトでconstを使い、必要な場合のみletを使用
  4. スコープを意識:ブロックスコープを持つletconstを優先的に使用
これで変数と定数の使い分けがよく分かったよ!さっそく実践してみる!
フォックン
フォックン
素晴らしい!適切な宣言を心がけることで、バグが少なく可読性の高いコードが書けるようになるよ。次回は条件分岐について学んでいこうね!
オウル先生
オウル先生

次回予告

Vol.2では「条件分岐を理解しよう」をテーマに、if文とswitch文の使い方を解説します。お楽しみに! 🚀

続けて読む
【オウル先生の基礎講座】Vol.2「条件分岐を理解しよう」
【オウル先生の基礎講座】Vol.2「条件分岐を理解しよう」
あわせて読みたい
プログラミング学習で挫折しない!モチベーション維持の秘訣
プログラミング学習で挫折しない!モチベーション維持の秘訣
あわせて読みたい
【完全ガイド】会社員がプログラミング学習を継続させるための現実的な方法
【完全ガイド】会社員がプログラミング学習を継続させるための現実的な方法
あわせて読みたい
プログラミングスクールで市場価値の高いスキルを身につける完全ガイド
プログラミングスクールで市場価値の高いスキルを身につける完全ガイド

ABOUT ME
アウル先生&フォックン
アウル先生&フォックン
ブログライター
オウル先生 フォックンが運営する未経験からのプログラミング上達ガイド! プログラミング学習に興味があるけど、 「どのスクールを選べばいいか分からない…」 「自分に合った学習方法が知りたい…」 「本当にエンジニアになれるか不安…」 そんな悩みをお持ちのあなたへ。 オウル先生とフォックンが、プログラミングスクール選びから学習方法、キャリア形成まで、丁寧にサポートします! 豊富な情報と分かりやすい解説で、あなたのプログラミング学習を成功へと導きます。
記事URLをコピーしました