情報アイランド

「情報を制する者は世界を制す」をモットーに様々な情報を提供することを目指すブログです。現在はプログラミング関連情報が多めですが、投資関連情報も取り扱っていきたいです。

ECMAScript 6の新機能(11)引数

引数のデフォルト値

ECMAScript 6で引数にデフォルト値を指定できるようになりました。

引数の値を指定しないで関数を呼び出した場合には引数の値はデフォルト値となります。

C:\work\node>node
> function f (x = 50 + 50, y = 200, z) {
... console.log(x);
... console.log(y);
... console.log(z);
... }
undefined
> f(999, 998, 997)
999
998
997
undefined
> f(999, 998)
999
998
undefined
undefined
> f(999)
999
200
undefined
undefined
> f()
100
200
undefined
undefined

また、引数の値としてundefinedを指定して関数を呼び出した場合にも引数の値はデフォルト値となります

> f(undefined, undefined, undefined)
100
200
undefined
undefined

デフォルト値を設定する際には既に定義されている変数の値を使用することもできます。

C:\work\node>node
> var d = 100
undefined
> function f (x = d * d, y = 200, z) {
... console.log(x);
... console.log(y);
... console.log(z);
... }
undefined
> f()
10000
200
undefined
undefined

それは引数でも構いません。

C:\work\node>node
function f (x = 100, y = x, z) {
... console.log(x);
... console.log(y);
... console.log(z);
... }
undefined
> f()
100
100
undefined
undefined

ただし、自分より後ろの引数の値を使用することはできません。

C:\work\node>node
> function f (x = y, y = 100, z) {
... console.log(x);
... console.log(y);
... console.log(z);
... }
undefined
> f()
ReferenceError: y is not defined
    at f (repl:1:17)
    at repl:1:1
    at REPLServer.defaultEval (repl.js:272:27)
    at bound (domain.js:280:14)
    at REPLServer.runBound [as eval] (domain.js:293:12)
    at REPLServer.<anonymous> (repl.js:441:10)
    at emitOne (events.js:101:20)
    at REPLServer.emit (events.js:188:7)
    at REPLServer.Interface._onLine (readline.js:219:10)
    at REPLServer.Interface._line (readline.js:561:8)

可変長引数

ECMAScript 6で可変長引数が使用できるようになりました。

引数の前に...を付加すると可変長引数になります。可変長引数は最後の引数でなければなりません。

C:\work\node>node
> function f (x, ...ys) {
... console.log(x);
... console.log(ys);
... }
undefined
> f(100, 200, 300)
100
[ 200, 300 ]
undefined

渡された引数が足りない場合には可変長引数の値は[]となります。

> f()
undefined
[]
undefined
pizyumi
プログラミング歴19年のベテランプログラマー。業務システム全般何でも作れます。現在はWeb系の技術を勉強中。
スポンサーリンク

-ecmascript 2015, ecmascript 6, Javascript