|
return 123;
}
顯然這是一個函數聲明,那下面的呢
var b=function(){return 123};
這個大家就懷疑了,好似不是聲明,因為函數沒有名字,只是一個匿名函數,好,再看
var b=function test(){return 123};
這個到底是不是函數聲明呢,好象是,那我回答你"不是"
alert(test);
var b=function test(){return 123};
可以在非ie上面任何一個js實現去測試,會報告test未定義錯誤,那如果這樣呢
var b=function test(){return 123};
alert(b);
alert(test);
會顯示出function test(){...}這樣的函數toString結果,可以第二個alert還是異常,為什么呢,也就是說這里function test(){return 123}不是聲明,而是一個函數對象,把引用放到了b里面而已,所以不會象聲明一樣默認把函數對象綁定到test名字上,那為什么我不叫用ie測試呢,因為
alert(test);
var b=function test(){return 123};
ie會把函數顯示出來,ie比較笨,不會區分單獨的function聲明和=右面的函數對象區別,另外ie甚至還支持function String.prototype.test(){...}這樣的聲明,可見ie的js bug還真不少了,難怪wilson不支持es4,非得搞一個es3.1出來呢,其實是自己的bug修正版
JavaScript技術:javascript下function聲明一些小結,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。