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