JavaScriptでは、様々な変数の型を用いることができます。厳密なことは、mdn などを見ていただくことにして、ここではざっとどんな型があって、どのように利用できるかを説明していくことにしましょう。
- Number (数値型)
- BigInt (長整数型)
- String (文字列型)
- Boolean (論理型)
- Object (オブジェクト型)
動的な型付け
JavaScript では、変数を型宣言する必要はありません。変数には、どのような型の値でも収めることができます。そのため、プログラミングしている時に想定していた型と実行時の型が違ってしまうことがあり、それがバグの原因になることがあります。実行時に問題が発生しないように、常に「型」を意識する習慣を身に着けましょう。
Number (数値型)
数値を扱う型です。整数と浮動小数点数には区別がありません。
let number1 = 1;
let number2 = 2.01;
let number3= number1/number2;
document.writeln(number3);
このコードの出力は、次のようになります。
0.49751243781094534
次のコードでは、注意が必要です。
let number1 = 0.1;
let number2 = 0.2;
document.writeln(number1+number2);
document.writeln("<br>");
document.writeln((number1*10+number2*10)/10);
そのまま加算する場合と、変数に10を掛けてから加算して10で割る場合では、結果が異なります。
0.30000000000000004
0.3
このような誤差を丸め誤差といいます。変数値をfor などのループ条件にする場合には、注意してください。
他の型からNumber型への変換には、Number()関数を使います。
let number1 = "0.1";
let number2 = Number(number1);
document.writeln(number1+1); // String型に+1している
document.writeln("<br>");
document.writeln(number2+1); // Number型に+1している
結果は次のようになります。
0.11
1.1
number1はString(文字列)型なので、+1 を暗黙に型変換して、+”1″ と文字列を連結しています。number2 はNumber(数値)型に明示的に変換されているため、算術計算として0.1+1の結果が得られています。
算術計算を意図していたのに、文字列の連結になってしまうバグは、とても見つけにくく困ったものです。計算式を記述する前には、変数の型を確認するか、明示的な型変換を行いましょう。
最大値、最小値は次のように求められます。この範囲を超えないように注意してください。
console.info(Number.MAX_VALUE);
console.info(Number.MAX_SAFE_INTEGER);
console.info(Number.MIN_VALUE);
console.info(Number.MIN_SAFE_INTEGER);
1.7976931348623157e+308
9007199254740991
5e-324
-9007199254740991