非推奨の機能

  • この章自体が非推奨となったため、この章も将来消えます

JavaScriptのイディオム(慣用的な書き方)や文法のなかには、 ECMAScriptのアップデートによって不要になったり非推奨になったりした古い書き方がいくつもあります。 そのような書き方はこれから書かれるJavaScriptの中で使わないようにすべきですが、 既存の古いコードのなかで使われていたときに読めなければ困るでしょう。 この章では、そのような一般的に非推奨とされるJavaScriptの書き方を紹介します。

argumentsによる可変長引数

  • 代替方法: Rest parameters

arguments変数はその関数に渡された引数が格納される特殊な変数です。 たとえば引数として渡した数値を足し合わせるsum関数は、arguments変数を使って次のように書けます。

function sum() {  
    // argumentsはarray-likeなオブジェクトなのでreduceメソッドを持たない
    return Array.prototype.reduce.call(arguments, function(sum, el) {
        return sum + el;
    });
}
sum(10, 5, 2); // => 17

arguments変数は配列のようにインデックスで要素にアクセスできますが、Arrayオブジェクトのインスタンスではありません。 そのため、mapreduceといったArrayオブジェクトのメソッドを直接呼び出すことはできません。

ECMAScript 2015で導入されたRest parametersは、可変長引数を文法としてサポートします。 Rest parametersが使える環境であれば、arguments変数は不要です。 さきほどのsum関数は次のように書き直すことができます。 可変長引数を配列として扱えるため、Rest parametersを使った書き方が推奨されます。

function sum(...numbers) {  
    return numbers.reduce((sum, el) => sum + el);
}
sum(10, 5, 2); // => 17