1. 程式人生 > >JavaScript中var變量引用function與直接聲明function

JavaScript中var變量引用function與直接聲明function

function 瀏覽器 開發

今天在h5開發app的過程中遇到了一個js問題,function的執行問題

在js中聲明函數function有這兩種方法

var A=function(){...}

或者

function A(){...}

第一種稱之為變量引用函數,因為js允許函數作為一個值傳遞給變量,第二種是直接聲明式函數

一直以為這兩種沒什麽區別,然而,今天在使用過程中發現,當我使用第一種方式聲明function的時候,如果如下這樣:

document.getElementById("xx").addEventListener("tap", A);var A=function(){...}//點擊tap時並不會執行A

原因很簡單,如果使用第一種方法,即函數作為值賦給變量A,必須先聲明A,並且賦值,一個基本的編程常識:沒有聲明過的變量不能使用

(內存中根本不存在),變量聲明必須在使用之前,實例中addEventListener根本得不到A!

然而話說回來,如果是第二種方法,即直接聲明函數的方法,那麽瀏覽器在獲取DOM結束之後,function就已經在那裏了,可調用

var 變量= 方式定義的函數,不能先調用函數,後聲明,只能先聲明函數,然後調用。

function方式定義函數可以先調用,後聲明。


JavaScript中var變量引用function與直接聲明function