Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
本章では、JavaScript で 2 つの最も基本的なデータ型、数値と文字列について説明します。その基盤となる表現と、それらを使用して作業し、計算を行うための関数について紹介します。
JavaScript では、数値はすべて 64 ビット倍精度浮動小数点数形式である IEEE 754 (すなわち、±2^−1022 と ±2^+1023 の間、もしくはおよそ ±10^−308 と ±10^+308 の間の数値、53 ビットの精度による) にしたがって実装されています。±2^53 − 1 までの整数は正確に表現できます。
浮動小数点数の表現に加えて、数値型は 3 つの記号的な値を持っています。 Infinity、-Infinity、NaN(非数、not-a-number)です。
JavaScript における他のプリミティブ型との関わりについては、JavaScript のデータ型とデータ構造 もご覧ください。
4 種類の数値リテラル、10 進数、2 進数、8 進数、16 進数を使用することができます。
10 進数リテラルはゼロ (0) から始めて、それ以降に 10 進の桁を続けることが可能ですが、0 に続くすべての数値が 8 より小さい場合、その数値は 8 進数として解析されることに注意してください。これは古い構文と見なされ、 0 で始まる数値リテラルは、 8 進数または 10 進数として解釈されるかどうかに関わらず、厳格モードでは構文エラーが発生します。そのため、代わりに 0o 接頭辞を使用してください。
2 進数の構文では、先行ゼロの後に小文字または大文字の "B" を使います (0b または 0B)。0b の後の数値が 0 または 1 ではない場合、 SyntaxError: "Missing binary digits after 0b"(0b の後に 2 進数の桁がありません) が発生します。
8 進数の標準的な構文は、接頭辞として 0o を付けるものです。例えば次のようなものです。
8 進数には古い構文もあります。 8 進数の前に 0 を付けるもので、 0644 === 420 や "\045" === "%" となります。 0 の後の数字が 0 から 7 の範囲外の場合、数値は 10 進数として解釈されます。
厳格モードでは、この 8 進数構文を禁止しています。
16 進数の構文では、先行ゼロの後に小文字または大文字の "X" を使います (0x または 0X)。0x の後の数値が範囲 (0123456789ABCDEF) 外の場合、 SyntaxError: "Identifier starts immediately after numeric literal" (数値リテラルの直後に識別子があります) が発生します。
以上示したすべてのリテラル構文において、可読性を改善するために、数字の間にアンダースコア (_) を挿入することができます。
数値リテラルに関する詳細については、字句文法のリファレンスを参照してください。
組み込みの Number オブジェクトは最大値、NaN、無限大といった数値定数のプロパティを持っています。これらのプロパティの値は変更できません。下記のように使用します。
常に上記のように定義済み Number オブジェクトのプロパティを常に参照してください。自作した Number オブジェクトのプロパティは使用しないでください。
次の表は Number オブジェクトのプロパティの要約です。
| Number.MAX_VALUE | 表現可能な正の最大値。(±1.7976931348623157e+308) |
| Number.MIN_VALUE | 表現可能な正の最小値。(5e-324) |
| Number.NaN | 非数を表す特別な値。 |
| Number.NEGATIVE_INFINITY | 負の無限大を表す特別な値。オーバーフローした際に返されます。 |
| Number.POSITIVE_INFINITY | 正の無限大を表す特別な値。オーバーフローした際に返されます。 |
| Number.EPSILON | 1 と Number オブジェクトで表現可能な 1 より大きな最小の数との差 (計算機イプシロン)。(2.220446049250313e-16) |
| Number.MIN_SAFE_INTEGER | JavaScript で正確に扱える最小の整数値。(−2^53 + 1, or −9007199254740991) |
| Number.MAX_SAFE_INTEGER | JavaScript で正確に扱える最大の整数値。(+2^53 − 1, or +9007199254740991) |
| Number.parseFloat() | 文字列引数を解析し、浮動小数点数を返します。 グローバル関数 parseFloat() と同等。 |
| Number.parseInt() | 文字列引数を解析し、指定された根(基数)の整数を返します。 グローバル関数 parseInt() と同等。 |
| Number.isFinite() | 渡された値が有限数であるか否かを判定します。 |
| Number.isInteger() | 渡された値が整数であるか否かを判定します。 |
| Number.isNaN() | 渡された値が NaN(非数)であるか否かを判定します。原型となったグローバル関数 isNaN() よりも強靭なバージョン。 |
| Number.isSafeInteger() | 渡された値が正確に扱える整数であるか否かを判定します。 |
Number オブジェクトのプロトタイプは様々な形の Number オブジェクトから情報を取得するメソッドを提供します。次表は Number.prototype のメソッドの要約です。
| toExponential() | 数値の指数表記を表す文字列を返します。 |
| toFixed() | 数値の固定小数点表記を表す文字列を返します。 |
| toPrecision() | 特定の精度の固定小数点表記による数値を表す文字列を返します。 |
組み込み Math オブジェクトは数学定数および数学関数のためのプロパティとメソッドを有しています。例えば、Math オブジェクトの PI プロパティは π (3.141…) の値を持ちます。以下のようにアプリケーション内で使用できます。
同様に、標準的な数学関数が Math のメソッドにあります。数学関数には、三角関数、対数、指数、およびその他の関数が含まれます。例えば、三角関数 sin を使用したい場合、下記のように記述します。
Math のすべての三角関数メソッドはラジアンで引数を取ることに注意してください。
次表は Math オブジェクトメソッドの要約です。
| abs() | 絶対値。 |
| sin(), cos(), tan() | 標準三角関数。引数はラジアン。 |
| asin(), acos(), atan(), atan2() | 逆三角関数。返値はラジアン。 |
| sinh(), cosh(), tanh() | 双曲線三角関数。引数は双曲線角度。 |
| asinh(), acosh(), atanh() | 逆双曲線三角関数。返値は双曲線角度。 |
| 指数と対数関数。 | |
| floor(), ceil() | 引数以下の最大の整数値、引数以上の最小の整数値を返します。 |
| min(), max() | カンマで区切られた数値リストの引数から最小値、最大値をそれぞれ返します。 |
| random() | 0 から 1 の間のランダムな数値を返します。 |
| round(), fround(), trunc(), | 丸めと切り捨て関数。 |
| sqrt(), cbrt(), hypot() | 平方根、立方根、引数の二乗の和の平方根を返す。 |
| sign() | 数の符号、すなわち数が正、負またはゼロかどうかを返します。 |
|
clz32(), imul() |
32 ビットのバイナリー表現にした場合の先行ゼロの個数を返す関数。 2 つの引数を C 言語のように 32 ビット乗算した結果を返す関数。 |
他の多くのオブジェクトとは異なり、決して独自の Math オブジェクトを生成しないでください。常にビルトイン Math オブジェクトを使用してください。
数値の欠点のひとつは、 64 ビットしか存在しないことです。実際には、 IEEE 754 エンコード方式を使用しているため、 Number.MAX_SAFE_INTEGER (253 - 1) よりも大きな整数を正確に表すことができません。バイナリーデータをエンコードする必要があること、また、i64 (64 ビット整数)や i128 (128 ビット整数)のような幅広い整数をサポートする他の言語と相互運用する必要があることから、 JavaScript では任意の大きな整数を表す別のデータ型である長整数 (BigInt) も提供しています。
長整数は、 n を接尾辞とする整数リテラルとして定義することができます。
長整数は、 BigInt コンストラクターを使用して数値または文字列値から構築することもできます。
概念的には、長整数は整数をエンコードする任意の長さのビット列です。精度を失うことなく、またオーバーフローやアンダーフローを起こすことなく、あらゆる算術演算を安全に行うことができます。
数値と比較すると、長整数の値は大きな整数を表す際に高い精度を実現します。しかし、浮動小数点数を表すことはできません。例えば、割り算はゼロに丸められます。
Math 関数は長整数値では使用できません。数値でのみ機能します。
長整数と数値のどちらかを選ぶかは、用途と入力の範囲によって決まります。数値の精度は、すでにほとんどの日常的な課題に対応できるはずです。また、長整数はバイナリーデータを処理するのに最も適しています。
長整数値でできることについては、「式と演算子」の章または BigInt リファレンスを参照してください。
JavaScript の文字列型は、テキストデータを表すために使われます。テキストデータ型は 16 ビット符号なし整数値 (UTF-16) からなる「要素」の集合体です。文字列の各要素は、その文字列内で所定の位置を占めています。最初の要素のインデックスは 0 で、次の要素のインデックスは 1 、といった具合に。文字列の長さはその要素数となります。文字列リテラルか文字列オブジェクトを使用して文字列を生成できます。
単一引用符または二重引用符のいずれかを使用して、単純な文字列を作成できます。
文字列リテラル内では、ほとんどの文字は文字通りに入力できます。 例外は、バックスラッシュ(\、エスケープシーケンスを始める)、文字列を囲むために使用されている引用符文字(文字列を終了する)、およびバックスラッシュが前になければ構文エラーとなる改行文字だけです。
エスケープシーケンスを使用して、より高度な文字列を作成することができます。
\x の後の数値は 16 進法による数として解釈されます。
Unicode エスケープシーケンスは \u の後に少なくとも文字が 4 個必要です。
Unicode コードポイントエスケープを使えば、どんな文字でも 16 進数を使用してエスケープすることができます。これにより、0x10FFFF まで Unicode コードポイントを利用できます。単純な Unicode エスケープを使用して同じ結果を得るには、多くの場合要素を半分に分け、サロゲートペアにする必要があります。
String.fromCodePoint() や String.prototype.codePointAt() も参考にしてください。
文字列値に対して直接メソッドを呼び出すことができます。
以下のメソッドが文字列 (String) 値で利用できます。
文字列を操作する際に、文字列操作に重要な機能を提供して指定された他の 2 種類のオブジェクトがあります。 RegExp と Intl です。これらはそれぞれ、正規表現と国際化で導入されています。
テンプレートリテラルは式を埋め込むことができる文字列リテラルです。複数行の文字列や文字列の補間機能を使用することができます。
テンプレートリテラルは二重引用符または一重引用符のかわりにバッククォート (`) (抑音アクセント)文字で囲まれています。テンプレートリテラルにはプレースホルダーを含めることができます。プレースホルダーはドル記号と中括弧 (${expression}) によって示されます。
ソースに挿入された、あらゆる改行文字はテンプレートリテラルの一部となります。通常の文字列を使って複数行の文字列を取得するには、次のような構文を使用しなければなりません。
複数行の文字列と同じ結果を得たければ、次のように書くことができます。
通常の文字列内に式を埋め込むには、次のような構文を用います。
テンプレートリテラルを使えば、糖衣構文を利用してこれをより読みやすくすることができます。
詳細については、JavaScript リファレンス内のテンプレートリテラルをご覧ください。
This page was last modified on 2026年3月19日 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.