javascript的函數定義的區別

來源:互聯網
上載者:User

      javascript中函數定義通常有兩種方法:

      1. 普通的函數定義:

function f1 (){}

  2. 變數式函數定義:

var f2 = function(){}

     還有一種定義方法是new Function,由於這種方法並不常用,這裡就不做解釋了。

     那這兩種定義方法有什麼不同呢?難道僅僅只是樣子不同而已嘛?當然不是這樣,我們來看個具體的例子吧,大家覺得以下代碼的執行結果是什嗎?

if (1 === 1) {
tellAlert();
} else{
function tellAlert(){
alert('hello');
}
}

     執行結果是:會提示“hello”
     那接下來這段代碼呢?

if (1 === 1) {
tellAlert();
} else{
var tellAlert = function (){
alert('hello');
}
}

     執行結果是:遊覽器不會提示“hello”,chrome中的控制台還會報錯:

    

    從上例中,我們可以明顯看出,兩者很大的不同就是執行順序不同,這是function語句在解析時會發生被提升的情況。也就是說不管function被放置在哪裡,它都會被移動到被定義時所在範圍的頂層。這樣的後果就是放寬了函數必須先聲明後使用的要求。

   《javascript語言精粹》中推薦使用的方法是 var f1 = function()。這樣能明確表示f1 是一個包含一個函數值的變數。

     而nodejs的源碼中,定義函數的方法是function f1()。

     個人感覺,在控制自己的代碼邏輯的基礎上,直接用function f1()會更好點,代碼會更清楚點。

·

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.