めぐの JavaScript 日記

あーもんど

人間も SyntaxError を投げられる

SyntaxError は JSエンジンがソースコードの解析中に投げて来るやつですが,これも普通のオブジェクトなので当然 throw もできます。人間が使う用途ってあるのかな?と思ったけど,構文誤りは何もソースコードの構文に限った概念ではないので,例えば自前で解析器とかを実装するときに投げる場面がありそうです。考えてみれば組み込みの JSON.parse()SyntaxError を投げますね。

タブ区切りの数列を解析する

コード

const numArray = row => {
    if (/(^|\t)(\t|$)/g.test(row)) {
        throw new SyntaxError("空のデータがあります");
    }
    return row.split("\t").map(x => {
        if (Number.isNaN(+x)) {
            throw new TypeError("数値以外が含まれています");
        }
        return +x;
    });
};

試す

numArray("2.1\t5\t0x82");  // [2.1, 5, 130]
numArray("2.1\t\t0x82");   // 空のデータがあります
numArray("2.1\t5\tABC");   // 数値以外が含まれています


日記 (おまけ)

家事掃除して課題1つだけやってだらだらした
もっと焦らないとやばい