目次
この本をサポートしてください: 購入(PDF、EPUB、MOBI) または 寄付
(広告なのでブロックしないでください)

10. 関数パラメーターのリストや呼び出しにおける末尾のコンマ

ECMAScript 2017 の機能「関数パラメーターのリストや呼び出しにおける末尾のコンマ」は Jeff Morrison により提案されました。

10.1 概要

パラメーターの定義における末尾のコンマは現在合法です

function foo(
    param1,
    param2,
) {}

同様に、関数呼び出しにおける末尾のコンマも現在合法です

foo(
    'abc',
    'def',
);

10.2 オブジェクトリテラルと配列リテラルにおける末尾のコンマ

末尾のコンマはオブジェクトリテラルでは無視されます

let obj = {
    first: 'Jane',
    last: 'Doe',
};

また、配列リテラルでも無視されます

let arr = [
    'red',
    'green',
    'blue',
];
console.log(arr.length); // 3

なぜそれが有用でしょうか? 利点は 2 つあります。

まず、最後のアイテムの位置が変更されてもコンマを追加および削除する必要がないため、アイテムの並べ替えが簡素化されます。

次に、実際に変更された内容を追跡する際にバージョン管理システムに役立ちます。たとえば、以下から

[
    'foo'
]

以下へ

[
    'foo',
    'bar'
]

'foo' の行と 'bar' の行の両方が変更されたようにマークされますが、唯一の本当の変更は後者の行の追加です。

10.3 機能: パラメーターの定義と関数呼び出しにおける末尾のコンマを許可する

オプションと無視さる末尾のコンマの利点により、この機能はそれらをパラメーターの定義と関数呼び出しに使用します。

たとえば、次の関数の宣言は ECMAScript 6 では SyntaxError を引き起こしますが、現在合法です

function foo(
    param1,
    param2,
) {}

同様に、この foo() の起動は現在構文上合法です

foo(
    'abc',
    'def',
);