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 で見れるけど)。