型ECMAScriptには、NumberとBigIntの2つの組み込み数値型があります(以下を参照)。特筆すべきは整数であるとは定義されていないという点です。いった記号的な値も持ち合わせています。範囲内にあるかを調べることもできます。種類の表現を持つ数値がひとつだけあります。実用上、影響はほとんどありません。いくつかのバイナリ演算を提供しています。そのため、ビットマスクを用いて、一つの数値で複数の真偽値を表現することも可能です。真偽値の集合を表現する手段を提供しているため、この機能はたいてい、バッドプラクティスとして考えられています。ビットマスクはコードの可読性、わかりやすさ、保守性を大きく損なってしまいます。ローカルストレージの容量的制約への対処や、ビット単位での転送量を考える必要のある極限状態など、非常に特殊なケースにおいてはこうしたテクニックが必要となるでしょう。このテクニックは、あくまでも最適化が必要な場合の最終手段としてのみ考慮すべきです。型は、任意の精度で整数を表すことができるJavaScriptの数値プリミティブです。BigIntを使用すると、Numberの安全な整数制限を超えても、大きな整数を安全に格納および操作できます。BigIntは、整数の末尾にnを追加するか、コンストラクターを呼び出すことによって作成されます。Number.MAX_SAFE_INTEGER定数を使用して、Numberで安全に扱える最も大きい値を取得できます。BigIntの導入により、Number.MAX_SAFE_INTEGERを超える数値の操作が可能になります。以下のNumber.MAX_SAFE_INTEGERに更に数値を足しても、期待される結果が返される例でこの挙動を確認できます。%などの演算子をBigIntで使用できます。BigIntはNumberと厳密に等しいわけではありませんが、ほとんど同じです。!などでBooleanに変換される場合、Numberと同じように動作します。BigIntは、Numberと同時に使用することはできません。代わりに、TypeErrorが発生します。型は、テキストデータを表すために使用します。文字列内の各要素は、文字列内の位置を占めます。文字列の長さは、内部にある要素の数です。これは一度生成した文字列は変更が不可能であるということを意味しています。オリジナルの文字列を操作することで別の文字列を生成することは可能となっています。つの文字列を連結する「文字列より」のコードに注意!文字列を用いて複雑なデータ構造を表現したいと思うこともあるでしょう。文字列は以下のような使い勝手の良さを備えています。おいて基準として扱われており、全てを文字列で処理したいと思わせる理屈の上では、文字列を用いることで、あらゆるデータ型の表現が可能ではあります。良い考えとはいえません。要素となってしまった場合、そのリストは破綻します。エスケープした文字を使用することでこの問題に対処することは可能ですが、そのルールをすべてに用意する必要がある上、用途に応じて適切な道具を用いなかったことによるメンテナンスコストの増大を招きます。文字列型の使用はテキストデータや記号データを表すのには向いていますが、別のデータ構造を表す為に文字列のパースや正しい抽象化を用いる必要がある場合には向いていないと言えるでしょう。