javascript中的函式宣告和函數運算式,javascript運算式

來源:互聯網
上載者:User

javascript中的函式宣告和函數運算式,javascript運算式
實際上,解析器在向執行環境中載入資料時,對函式宣告和函數運算式並非一樣,解析器會率先讀取函式宣告,並使其在執行任何代碼之前可用,至於函數運算式,則需要等到等到解析器執行到它所在的程式碼才會被真正執行
javascript:函式宣告,函數運算式,與()

function name(){}函式宣告,
var name =function(){}函數運算式

var name=function(){
}();
並不符合以上兩種,只能說都不是,但是這還需要看等號右邊的匿名自運行函數的傳回值在做最後的判斷
 
JavaScript:函式宣告與函數運算式

javascript雖然是解釋執行的語言,但也會進行先行編譯。

if(condition){ function sayHi(){ alert("Hi!"); }}else{ function sayHi(){ alert("Yo!"); }}
這種形式,JS引擎在先行編譯的過程中會註冊方法到window對象下,就是window.sayHi。
而不會顧及if else條件,導致重複的sayHi方法被註冊,在這種情況下是無效文法。

var sayHi;if(condition){ sayHi=function sayHi(){ alert("Hi!"); };}else{ sayHi=function sayHi(){ alert("Yo!"); };}
而下面這種是作為一個 變數(而非函數function),變數是可以被重複賦值的,所以文法不會有問題。

不知道有沒有說清楚。

 

聯繫我們

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