読者です 読者をやめる 読者になる 読者になる

javascriptで識別子に日本語を使う

今まで知らなかったのですが、javascriptでは識別子にunicode文字を使うことができます。つまり日本語が使えるということです。面白そうなので試してみました。

実験

とりあえず本当に動くのか簡単なコードで試してみましょう。

ソースコード

var うにゅー = "いちご大福";
console.log(うにゅー);

出力結果

いちご大福

変数の中身が正しく表示されています。奇妙な感じですが問題なく動きました。次は素数を判定する処理を日本語の識別子で記述してみようと思います。

ソースコード

function 素数ですか(自然数) {
    if (自然数 < 2) {
        return false;
    } else if (自然数 == 2) {
        return true;
    } else if (自然数 % 2 == 0) {
        return false;
    }
    for (var あ = 3; あ <= 自然数 / あ; あ += 2) {
        if (自然数 % あ == 0) {
            return false;
        }
    }
    return true;
}
console.log(素数ですか(2017));

出力結果

true

関数名や引数名に日本語を使っても問題ありません。まるで会話のようですね。わかりやすいのかわかりにくいのか微妙なところです。もっと複雑な例を試したいので、クイックソートを日本語の識別子で記述してみました。ソースコードwikipediaの実装例そのままです。

ソースコード

function 高速整列(配列, 左, 右) {
    if (左 < 右) {
        var あ = 左;
        var い = 右;
        var 中央 = 配列[Math.floor((あ + い) / 2)];
        while (true) {
            while (配列[] < 中央) あ++;
            while (配列[] > 中央) い--;
            if (あ >= い) break;
            var 一時変数 = 配列[];
            配列[] = 配列[];
            配列[] = 一時変数;
            あ++;
            い--;
        }
        高速整列(配列, 左, あ - 1);
        高速整列(配列, い + 1, 右);
    }
}

var 配列 = [9, 2, 4, 8, 1, 3, 7, 5, 6];
高速整列(配列, 0, 配列.length - 1);
console.log(配列);

出力結果

[1, 2, 3, 4, 5, 6, 7, 8, 9]

変数名が日本語の配列に添え字を使ってアクセスしたりプロパティ使ったりしていますが、問題なく動きます。

まとめ

実用性はともかくネタとしては面白いかもしれません。