JavaScriptの定数:不変性の力を解き放つ
こんにちは、未来のJavaScript魔法使いさんたち!あなたたちをJavaScriptの魔法の世界に案内すること、とても嬉しいです。近所の親切なコンピュータサイエンスの先生として、多くの生徒がこの概念に苦戦しているのを見てきましたが、心配しないでください!このレッスンの終わりまでに、あなたたちは定数の達人になるでしょう。那么、キーボードを手に取り、一緒に飛び込んでみましょう!
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!";
var
、let
、const
の違い
さて、私たちの3つの変数宣言キーワード:var
、let
、const
を比較してみましょう。それらはまるで3人の兄弟で、それぞれ独自の個性を持っています:
特性 | var | let | const |
---|---|---|---|
スコープ | 関数スコープ | ブロックスコープ | ブロックスコープ |
ホイスト | はい | いいえ | いいえ |
再割り当て | はい | はい | いいえ |
再宣言 | はい | いいえ | いいえ |
var
、let
、const
のどれを使うべき?
JavaScriptを教えてきた年数を振り返り、私の意見は以下の通りです:
- デフォルトで
const
を使いましょう。それはまるで、あなたの変数をセキュリティの高いsafeに預けているようなものです。 - 値が変わることを知っている場合は
let
を使いましょう。ループのカウンタのように。 -
var
は古いコードを扱う場合を除き、避けましょう。それはまるで、引き出しの中の古い携帯電話のように、動作はしますが、もっと良い選択肢があるだけです。
これらの選択は、他の開発者(未来のあなた自身を含む)に対してあなたの意図を伝えることに関連しています!
結論として、JavaScriptの定数は、より予測可能でエラーに強いコードを作成するための強力なツールです。それは、部屋の責任者のような存在で、すべてを秩序立てます。JavaScriptの旅を続ける中で、適切に定数を使うことで、コードがクリーンで効率的かつ理解しやすくなることを発見するでしょう。
それでは、若いパダワンたち、const
と共に進んでいきましょう!
Credits: Image by storyset