このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【JavaScript入門】ビルトインオブジェクト関数

Number オブジェクトの静的メソッド

 ビルトインオブジェクトの関数(静的メソッド)は、JavaScript が最初から備えているオブジェクトに対して定義されているメソッドのことです。呼び出す際にわざわざインスタンス(new などで生成したオブジェクト)を作らなくても利用できるのが特徴です。ここでは、なかでもよく使う NumberMath について、代表的な静的メソッドを紹介します。ビルトインオブジェクトには他にもいくつか種類がありますが、まずは日常的に登場するこれらを押さえておくと便利です。

1.Number オブジェクトの静的メソッド

 Number は数値に関連する機能をまとめたビルトインオブジェクトです。静的メソッド(インスタンスを作らずに使えるメソッド)として、以下のようなものが用意されています。

メソッド意味
Number.isNaN(n)引数 n が数値かつ NaN であれば true を返す。従来の isNaN() より安全な判定が可能。
Number.isFinite(n)引数 n が数値かつ有限数(∞ ではない)なら true を返す。従来の isFinite() より安全。
Number.isInteger(n)引数 n が数値かつ整数であれば true を返す。
Number.isSafeInteger(n)引数 n が数値かつ「安全な整数(-9,007,199,254,740,991 ~ 9,007,199,254,740,991)」なら true

安全な整数 (safe integer) とは、浮動小数点計算で誤差が発生しない範囲の整数のことです。-2^53+1 ~ 2^53-1 の範囲外の整数だと正しく表現できない可能性があるため、このメソッドで範囲チェックを行えます。

2.Math オブジェクトの静的メソッド

 Math は数学関連の計算で役立つビルトインオブジェクトです。三角関数や対数なども含めて多数のメソッドがありますが、ここでは代表的なものを挙げます。

メソッド意味
Math.abs(n)n の絶対値
Math.trunc(n)n の小数部分を切り捨てた整数
Math.floor(n)n 以下の最大整数
Math.ceil(n)n 以上の最小整数
Math.round(n)n を四捨五入した整数
Math.max(a, b, ...)引数の中で最も大きい値
Math.min(a, b, ...)引数の中で最も小さい値
Math.random()0以上1未満の疑似乱数
Math.sqrt(n)n の平方根
Math.cbrt(n)n の立方根
Math.sin(n)n (ラジアン) のサイン値
Math.cos(n)n (ラジアン) のコサイン値

 さらに、Math には Math.PI(円周率)などの定数や、log 関連の関数(対数関数)が多数用意されています。特に Web ページを更新する用途ではそこまで頻繁に使わないかもしれませんが、例えばゲームやシミュレーションなど数値計算を多用する場面では非常に重宝します。

3.サンプルコード (HTML + JavaScript)

 次の例を「myBuiltInFunctions.html」として保存し、ブラウザで開き、開発者ツール(コンソール)の出力を確認してください。

【myBuiltInFunctions.html】

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="utf-8">
  <title>myBuiltInFunctions.html</title>
</head>
<body>
  <h1>ビルトインオブジェクト関数のサンプル</h1>
  <p>コンソールに結果が表示されます。ブラウザの開発者ツールを開いて確認してください。</p>

  <script>
    // 1. Number オブジェクトの静的メソッド
    console.log('Number.isNaN("テスト"):', Number.isNaN("テスト")); // => false (文字列は数値ではない)
    console.log('Number.isNaN(NaN):', Number.isNaN(NaN));         // => true

    console.log('Number.isFinite(123):', Number.isFinite(123));  // => true
    console.log('Number.isFinite(Infinity):', Number.isFinite(Infinity)); // => false

    console.log('Number.isInteger(3.14):', Number.isInteger(3.14));  // => false
    console.log('Number.isInteger(7):', Number.isInteger(7));        // => true

    console.log('Number.isSafeInteger(9007199254740991):',
                Number.isSafeInteger(9007199254740991)); // => false
    console.log('Number.isSafeInteger(123):',
                Number.isSafeInteger(123)); // => true

    // 2. Math オブジェクトの静的メソッド
    console.log('Math.abs(-5):', Math.abs(-5));       // => 5
    console.log('Math.trunc(4.9):', Math.trunc(4.9)); // => 4
    console.log('Math.floor(4.9):', Math.floor(4.9)); // => 4
    console.log('Math.ceil(4.1):', Math.ceil(4.1));   // => 5
    console.log('Math.round(4.5):', Math.round(4.5)); // => 5

    console.log('Math.max(3, 7, -1, 9):', Math.max(3, 7, -1, 9)); // => 9
    console.log('Math.min(3, 7, -1, 9):', Math.min(3, 7, -1, 9)); // => -1

    console.log('Math.random():', Math.random()); // 0以上1未満の乱数

    console.log('Math.sqrt(16):', Math.sqrt(16));   // => 4
    console.log('Math.cbrt(27):', Math.cbrt(27));   // => 3

    console.log('Math.sin(Math.PI/2):', Math.sin(Math.PI/2)); // => 1
    console.log('Math.cos(Math.PI/3):', Math.cos(Math.PI/3)); // => 0.5 (1/2)
  </script>
</body>
</html>

実行結果

デバッグコンソールの出力

Number.isNaN("テスト"): false
Number.isNaN(NaN): true
Number.isFinite(123): true
Number.isFinite(Infinity): false
Number.isInteger(3.14): false
Number.isInteger(7): true
Number.isSafeInteger(9007199254740991): false
Number.isSafeInteger(123): true
Math.abs(-5): 5
Math.trunc(4.9): 4
Math.floor(4.9): 4
Math.ceil(4.1): 5
Math.round(4.5): 5
Math.max(3, 7, -1, 9): 9
Math.min(3, 7, -1, 9): -1
Math.random(): 0.123456789  (ランダム例)
Math.sqrt(16): 4
Math.cbrt(27): 3
Math.sin(Math.PI/2): 1
Math.cos(Math.PI/3): 0.5

まとめ

  • NumberNumber.isNaN(), Number.isFinite(), Number.isInteger() などの静的メソッドで、数値の判定や安全性のチェックを行える。
  • MathMath.abs(), Math.floor() など、数学に関するさまざまな静的メソッドがある。三角関数や対数など、さらに多くの機能を提供。
  • ビルトインオブジェクトのメソッドは覚えておくと、コードを少なく書けたり、高度な計算やバリデーションに役立つ。
  • 他にも String, Array, Date, RegExp などのビルトインオブジェクトが多数存在し、それぞれ便利な静的メソッドやプロパティを持っている。

 Webアプリケーションだけでなく、ゲームや科学技術計算などにも使える多機能なメソッドが用意されているので、用途に合わせてこれらのビルトインオブジェクト関数をうまく活用していきましょう。