function の書き方で知ってたけどわかってなかったこと
いろいろ読んでたらやっと
function name(arg){ //do something };
と
var name = function(arg){ //do something };
の違いがわかった。
前者は読み込んで variable 作ったりとかする時点で関数になって、後者は実行してくときに関数が代入される。
「それってどう違うのよ」とか思ってたけど
declaredByFunction(); //*1 declaredByVar(); //*2 function declaredByFunction(){ //do something }; var declaredByVar = function(){ //blah, blah, blah };
なんてのが *1 はできるけど *2 はできない(*2 を実行する時点では declaredByVar に function(){...} が代入されてない)。
こいつらの名前ってあるんだろうか。どっちも「function 式」?
追記: 12/Apr/2007
書くの忘れてた。
前者は「function 宣言」(か「function 文」)で、後者が「function 式」っぽい。違いは名前つけるかどうかじゃなくてどこに出てくるかだそうだ。こんなこともできる。
var declaredByVar = function name(){ // blah, blah, blah }
名前つけれるけど関数の中でしか使えない(Fx だと declaredByVar.name で見れるけど)。