サービス終了のお知らせ
JavaScript
▼人気記事ランキング
4.文法
4.2.複雑な例
以下のサンプルコードは、様々なJavaScriptの機能を示したものである。

"use strict"; // strictモードの宣言/* 2つの数値の最小公倍数を求める */function LCMCalculator(x, y) { // コンストラクタ関数    const checkInt = (x)=> { // 入れ子の関数        if (x % 1 !== 0) {            throw new TypeError(x + " is not an integer"); // 例外のスロー        }        return x;    };    //   行末のセミコロンは省略可能な場合があるが、省略は推奨されない。    this.a = checkInt(x)    this.b = checkInt(y);}// オブジェクトのプロトタイプはコンストラクタ関数の prototype プロパティに格納するLCMCalculator.prototype = { // オブジェクトリテラル    constructor: LCMCalculator, // このようにプロトタイプを上書きする場合は、                                // constructorプロパティにコンストラクタ関数名を再指定する    gcd: function () { // 最大公約数を計算するメソッド        // 「ユークリッドの互除法」アルゴリズムで計算        let a = Math.abs(this.a), b = Math.abs(this.b);        if (a < b) {            // 変数の入れ替え            const t = b;            b = a;            a = t;        }        while (b !== 0) {            const t = b;            b = a % b;            a = t;        }        // 最大公約数の計算は一度でよいため、自分自身を計算済みの結果を返すメソッドで再定義(上書き)する。        // (これにより LCMCalculator.prototype.gcd の代わりに this.gcd が呼ばれるようになる。        //   ただし、計算後にプロパティ a や b が変更されてしまうと、結果は誤りとなる。)        // なお 'gcd' === "gcd", this['gcd'] === this.gcd である。        this['gcd'] = function () {            return a;        };        return a;    },    lcm : function () { // 最小公倍数を計算するメソッド        // 変数名は、オブジェクトのプロパティと衝突しない。例)lcm は this.lcm とは異なる。        // 以下では、浮動小数の精度の問題を避けるために this.a * this.b としていない。        const lcm = this.a/this.gcd()*this.b;        // 最小公倍数の計算も一度でよいため、自分自身を計算済みの結果を返すメソッドで再定義(上書き)する。        this.lcm = function () {            return lcm;        };        return lcm;    },    toString: function () { // toStringはオブジェクトを文字列に変換するときに呼ばれるメソッド。        // テンプレート文字列により文字列中に値を埋め込むことができる。        return `LCMCalculator: a = ${this.a}, b = ${this.b}`;    }};// 汎用の出力関数の定義。この実装はWebブラウザ上でのみ動作する。function output(x) {    document.body.appendChild(document.createTextNode(x));    document.body.appendChild(document.createElement('br'));}// 無名関数はさまざまな書き方が可能[[25, 55], [21, 56], [22, 58], [28, 56]].map(([a, b])=> new LCMCalculator(a, b)) // 配列リテラル + マッピング関数.sort((a, b)=> a.lcm() - b.lcm()) // 指定した比較関数を用いたソート.forEach(obj=> {    output(obj + ", gcd = " + obj.gcd() + ", lcm = " + obj.lcm());});
上記コードをウェブブラウザ上で実行すると、以下の結果が表示される。

LCMCalculator: a = 28, b = 56, gcd = 28, lcm = 56LCMCalculator: a = 21, b = 56, gcd = 7, lcm = 168LCMCalculator: a = 25, b = 55, gcd = 5, lcm = 275LCMCalculator: a = 22, b = 58, gcd = 2, lcm = 638
[4]前ページ
(4.1.基本的な文法)
[6]次ページ
(5.1.Webページでの利用)
~目次に戻る
出典:Wikipedia
2019/12/26 01:00
ソ人気記事ランキング
2020/02/23 更新
 1位日本
 2位水野朝陽
 3位メイプルソープ事件
 4位第二次世界大戦
 5位AV女優
▲上に戻る
[9]Wikipediaトップ
[0]gooトップ
免責事項
(C)NTT Resonant