式の戻り値は代入した値
今日、職場でこんなコードを発見。
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に値を設定して戻り値が引数として渡っているだけであることを。
何というまぎらわしいことを(怒)