javascriptは確かに変わった言語なのかもしれない。
javasriptはjavaに似せたまったく異なる言語。
普通なら指定した数の引数で関数を呼ばなくちゃいけないのに
こんな風に書くことができる。
function sum(){//何も引数を取らない関数? return Array.reduce(arguments,function(x,y){return x+y}); } print(sum(1,2,3,4)) //10
argumentsってなんだろ?
実際のところ、関数を定義する時の仮引数はあまり重要じゃないのかもしれない。
こうゆう関数は
function f(a, b, c){ ... }
以下と同じなのかもしれない。
functon f(){ a = arguments[0]; b = arguments[1]; c = arguments[2]; ... }
実行時の引数が仮引数のa,b,cに渡されるんじゃなくて、
関数を実行したときすべての引数がargumentsという配列のようなものに格納される。
そして、それが仮引数で定義されたa,b,cに代入(束縛)されるような感じなのかも