2024年9月24日

データ型

JavaScript の値は常に特定の型です。例えば、文字列や数値です。

JavaScript には8つの基本的なデータ型があります。ここでは基本を学び、次のチャプターでそれらの詳細について話しましょう。

なお、変数はどんなデータでも入れることができます。変数はある時点では文字列で、その後数値を設定することができます:

// エラーなし
let message = "hello";
message = 123456;

このようなことができるプログラミング言語は “動的型付け” と呼ばれ、データ型はありますが、変数はそのどれにもバインドされないことを意味します。

数値

let n = 123;
n = 12.345;

数値 型は整数と浮動小数点両方に使われます。

数値に関する多くの操作があります、 e.g. 乗算 *, 除算 /, 加算 +, 減算 - など。

通常の数値に加えて、これらのタイプに属する “特別な数値型” もあります。: Infinity-InfinityNaN.

  • Infinity は数学的な無限大 ∞ を表します。どの値よりも大きい特別な値です。

    ゼロによる除算でそれを得ることができます。:

    alert( 1 / 0 ); // 無限大

    もしくは、単にコードに直接書くこともできます:

    alert( Infinity ); // 無限大
  • NaN は計算上のエラーを表します。正しくないもしくは未定義の数学的な操作の結果です。例:

    alert( "not a number" / 2 ); // NaN, このような除算は誤りです

    NaN は粘着性です。NaN 以降はどのような操作をしても NaN になります:

    alert( "not a number" / 2 + 5 ); // NaN

    そのため、数学的な表現の中のどこかに NaN がある場合、結果全体に伝搬します。

算術演算子は安全です

JavaScriptでは数学をするのは安全です。ゼロによる除算、数値ではない文字列を数値として扱う、など何でもできます。

スクリプトは致命的なエラー(“死”)で止まることはありません。 最悪の場合でも NaN という結果になります。

特別な数値は正式には “数値” 型に所属します。もちろん、常識では数値ではありませんが。

チャプター 数値 でより数値の動作について見ていきます。

BigInt

JavaScript では、“数値” 型は (253-1) (つまり 9007199254740991) より大きい、あるいは負値であれば -(253-1) より小さい整数を表現することができません。これらは内部表現に起因する技術的な制限です。

ほとんどの目的ではこれで十分ですが、場合によっては非常に大きな数が必要になります。例えば暗号化やマイクロ秒の精度のタイムスタンプです。

BigInt 型は任意の長さの整数を表現するために、最近言語に追加された型です。

BigInt の値は整数値の末尾に n を追加することで作成されます:

// 末尾の "n" は BigInt を意味します
const bigInt = 1234567890123456789012345678901234567890n;

BigInt の数値はめったに必要とされないのでここでは説明しませんが、別のチャプター BigInt で記載しています。このような大きな数値が必要なときは参照してください。

互換性の問題

現時点では、BigInt は Firefox/Chrome/Edge/Safari でサポートされていますが、IE ではサポートされていません。