JavaScriptの定数:不変性の力を解き放つ

こんにちは、未来のJavaScript魔法使いさんたち!あなたたちをJavaScriptの魔法の世界に案内すること、とても嬉しいです。近所の親切なコンピュータサイエンスの先生として、多くの生徒がこの概念に苦戦しているのを見てきましたが、心配しないでください!このレッスンの終わりまでに、あなたたちは定数の達人になるでしょう。那么、キーボードを手に取り、一緒に飛び込んでみましょう!

JavaScript - Constants

JavaScriptの定数とは?

ケーキを焼いているとしましょう。オーブンに入れた後、突然それをピザに変えることはできませんよね?JavaScriptの定数もそんな感じです。それは、あなたのコードに対する約束のようなものです。「この値は変わらない、ピンクの誓いだよ!」

定数とは、一度値が割り当てられた後、再割り当てできない変数です。変数の頑固な兄貴分のようなものです。一度決めたら、それを変えることはできません!

JavaScriptでの定数の宣言

JavaScriptで定数を宣言するには、constキーワードを使います。それはまるで、「よし、JavaScript、この штуčkaは決して変わらないよ」と言うようなものです。

以下にいくつかの例を見てみましょう:

const PI = 3.14159;
const DAYS_IN_WEEK = 7;
const FAVORITE_COLOR = "purple";

これらの例では、数学の定数π、一週間の日数、そして好きな色の定数を宣言しています。一度設定すると、これらの値は固定されます。

再割り当てできない:定数の不変性

ここで、定数が本当の色を現します。一度定数に値を割り当てると、それを変更することはできません。猫に風呂に入るよう説得するのに似ています。それは決して起こりません!

const MY_AGE = 25;
console.log(MY_AGE); // 出力: 25

MY_AGE = 26; // エラーが発生:定数変数への割り当てはできません。

定数に値を再割り当てようとすると、JavaScriptは激怒(エラーの形で)します。それは、「Hey! あなたはこれが変わらないと約束したじゃないか!」と言っているようなものです。

ブロックスコープ:定数の遊び場

定数には「ブロックスコープ」があります。ブロックを遊び場の柵に例えると、定数はその遊び場内でのみ遊ぶことができます。

if (true) {
const BLOCK_SCOPED = "I'm only available inside this block!";
console.log(BLOCK_SCOPED); // 出力: I'm only available inside this block!
}

console.log(BLOCK_SCOPED); // エラーが発生:BLOCK_SCOPEDは定義されていません

この例では、BLOCK_SCOPEDは遊び場の子供のように、ifブロック内でのみ存在し、それを外からはアクセスできません。

JavaScriptの定数配列とオブジェクト:伏線

さて、ここで少し厄介な部分に移ります。配列やオブジェクトを使ったconstでは、話が少し複雑になります。定数バインディングは不変ですが、配列やオブジェクトの中身はまだ変更可能です。それはまるで、定数のペットを持っているようなものです。ペットが誰であるかは変わりませんが、新しい技を教えることはできます!

const MY_PETS = ["dog", "cat", "fish"];
console.log(MY_PETS); // 出力: ["dog", "cat", "fish"]

MY_PETS.push("hamster");
console.log(MY_PETS); // 出力: ["dog", "cat", "fish", "hamster"]

MY_PETS = ["parrot"]; // エラーが発生:定数変数への割り当てはできません

この例では、私たちはMY_PETS配列に追加することができますが、完全に新しい配列に再割り当てすることはできません。

コNSTのホイスト不存在:置かれた場所で待って!

varとは異なり、constはホイストされません。ホイストとは、子どもに部屋を片付けるように言って、後でやると言うようなものですが、constでは「後で」はありません。定数を使う前に宣言し、初期化する必要があります。

console.log(HOISTED_VAR); // 出力: undefined
var HOISTED_VAR = "I'm hoisted!";

console.log(NOT_HOISTED_CONST); // エラーが発生:NOT_HOISTED_CONSTの初期化前アクセスはできません
const NOT_HOISTED_CONST = "I'm not hoisted!";

varletconstの違い

さて、私たちの3つの変数宣言キーワード:varletconstを比較してみましょう。それらはまるで3人の兄弟で、それぞれ独自の個性を持っています:

特性 var let const
スコープ 関数スコープ ブロックスコープ ブロックスコープ
ホイスト はい いいえ いいえ
再割り当て はい はい いいえ
再宣言 はい いいえ いいえ

varletconstのどれを使うべき?

JavaScriptを教えてきた年数を振り返り、私の意見は以下の通りです:

  1. デフォルトでconstを使いましょう。それはまるで、あなたの変数をセキュリティの高いsafeに預けているようなものです。
  2. 値が変わることを知っている場合はletを使いましょう。ループのカウンタのように。
  3. varは古いコードを扱う場合を除き、避けましょう。それはまるで、引き出しの中の古い携帯電話のように、動作はしますが、もっと良い選択肢があるだけです。

これらの選択は、他の開発者(未来のあなた自身を含む)に対してあなたの意図を伝えることに関連しています!

結論として、JavaScriptの定数は、より予測可能でエラーに強いコードを作成するための強力なツールです。それは、部屋の責任者のような存在で、すべてを秩序立てます。JavaScriptの旅を続ける中で、適切に定数を使うことで、コードがクリーンで効率的かつ理解しやすくなることを発見するでしょう。

それでは、若いパダワンたち、constと共に進んでいきましょう!

Credits: Image by storyset