javascript下function聲明一些小結

來源:互聯網
上載者:User

function test(){
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修正版

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.