値には種類がある
JavaScriptでは、変数に数値や文字などの値を入れて処理を行います。
値にはいくつかの種類があり、その違いによって、できる操作や扱い方が変わります。
変数や計算、後の繰り返し処理や、if文で使う比較演算子を正しく理解するために、JavaScriptの型について説明します。
ここでは、JavaScriptで最初に扱う基本的なプリミティブ型を整理します。
数値
数値は、計算や比較に使われる値です。
JavaScriptでは整数や小数を区別せず、数値として同じように扱います。
構文
let 変数名=数値;
変数に数値を代入することで、その値を使った計算や処理が行えます。
数値はそのまま書くだけで使用でき、特別な記号や指定は必要ありません。
なお、変数のページで既に扱っているため、コード例・動作例は省略します。
文字列
文字列は、文字や文章を表すための値です。
数値と見た目が似ていても、扱い方やできる操作は異なります。
構文
let 変数名='文字列';
文字列は、シングルクォーテーションまたはダブルクォーテーションで囲んで表します。
囲まれた中身は数値であっても、文字として扱われます。
なお、変数のページで既に扱っているため、コード例・動作例は省略します。
真偽値
真偽値(Boolean)は、処理を実行するかどうかを判断するための値で、JavaScriptではboolean型と呼びます。
JavaScriptでは、true(真)とfalse(偽)の2つだけを持ち、条件分岐や繰り返し処理の判断に使われます。
そのため、プログラムの判断や分岐の基礎となります。
構文
変数 = true;
変数 = false;
真偽値を変数として用意することで、状態や判定結果を保持できます。
クォーテーションで囲まず、そのまま記述します。
Boolean型として扱いたい場合、代入する値はtrueまたはfalseに限られます。
数値や文字列を代入すると、その変数は真偽値としては扱われなくなります。
コード例
//boolean.js
let state = true;
alert(state);
state = false;
alert(state);
動作例
最初に変数stateにtrueを代入した後、alertにはtrueが表示されます。
次にstateのtrueにfalseを代入した後、alertにfalseが表示されます。
真偽値は、スイッチのようなものと考えると分かりやすいです。
ONの状態がtrue、OFFの状態がfalseです。
プログラムでは、このON / OFFの状態を使って、処理を実行するかどうかを切り替えます。
単体でtrueやfalseを表示する機会は少ないですが、他の処理を動かすための条件やトリガーとして、内部では非常によく使われます。
また、let state; のように宣言だけすることはできますが、この場合の値はtrueでもfalseでもなく、undefinedになります。
undefined
undefinedは、「値がまだ用意されていない状態」を表す値です。
変数は存在しているが、中身が決まっていないときに使われます。
構文
let 変数;
変数を宣言しただけで、値を代入していない場合、その中身は自動的にundefinedになります。
undefinedは、JavaScriptが内部的に設定する初期状態の値です。
コード例
//undefinedTest.js
let data;
alert(data);
動作例
この例では、変数dataを宣言していますが、値は代入していません。
そのため、alertで表示されるのはundefinedになります。
これはエラーではなく、まだ値が決まっていないという状態を表しています。
変数を扱っていると、意図せずundefinedになることがあるため、意味を理解しておくことが大切です。
なお、let data = undefined;と自分で代入することもできますが、多くの場合は何も代入していない状態をそのまま使います。
null
nullは、「値が存在しないことを、意図的に示すための値」です。
まだ決まっていないundefinedとは意味が異なります。
構文
let 変数=null;
nullは、自分で明示的に代入する値です。
何も入っていないのではなく、何もない状態にしていることを表します。
コード例
//nullTest.js
let data = null;
alert(data);
動作例
このコードでは、変数dataにnullを代入しています。
alertにはnullが表示され、「値が存在しない」という状態を表します。
undefinedと違い、nullはプログラマーが意図して設定する値です。
そのため、「一度使った変数を空の状態に戻したい」ときなどに使われます。
undefinedとnullの違い
undefinedとnullは、どちらも「何もない」ように見えるため違いが分かりにくい値です。
undefinedは、まだ値が決まっていない状態を表します。
プログラムの途中で、値が代入されていない場合に自動的に扱われることが多い値です。
一方、nullは「ここには値がない」と意図的に決めた状態を表します。
値が存在しないことを、あらかじめ明示したい場合に使われます。
どちらも空のように見えますが、意味は異なります。
この違いは、次ページの比較演算子を扱う際に重要になります。
NaN
NaNとはNot a Numberの略で、数値の計算を実行したものの、結果を数値として表せなかった場合に返される値です。
コード例
//NaNTest.js
let num1 = 5;
let num2 = 'りんご';
alert(num1 * num2);
動作例
このコードでは数値の5に文字列であるりんごを掛け算しようとしています。
人間ならばりんごが5個ということを言いたかったと解釈しますが、コンピューターの演算ではそういう解釈はできません。
そのため、そのため、計算自体は行われますが、結果を数値として表せないため、NaNという値が表示されます。