技術メモのかけら

内容はもとより調べたことすら忘れてしまうので個人的なメモです。とにかく短く、結論だけ書いていきます。

式の戻り値は代入した値

今日、職場でこんなコードを発見。

funcName(param1="hoge");

動作的には問題ないコードだし、 こんな引数の渡し方もあるのかと思い調べてみたが、 検索してもこの書き方の情報が出てこない。。。

とりあえず実験。

function foo(param1, param2, param3) {
    console.log(param1);
    console.log(param2);
    console.log(param3);
}
foo(param1="abc", param2=1000, param3=800);
abc
1000
800

やっぱりちゃんと引数を渡せている。

じゃあ、今度は引数の順番をシャッフルしてみる。 変数名を指定しているので結果が変わらないはず。

function foo(param1, param2, param3) {
    console.log(param1);
    console.log(param2);
    console.log(param3);
}
foo(param2=1000, param1="abc", param3=800);
1000
abc
800

変数名なんて関係なく渡した順番で出力された。 これでは変数名を指定した意味ないし。

ここまで来てやっと気づきました。

foo(param1="abc", param2=1000, param3=800);

変数pram1, param2, param3に値を設定して戻り値が引数として渡っているだけであることを。
何というまぎらわしいことを(怒)