DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> JavaScript基礎知識 >> JS兩種定義方式的區別、內部原理
JS兩種定義方式的區別、內部原理
編輯:JavaScript基礎知識     
相信兩種方式大家都用過,但未必所有人都知道其 區別,內部原理。
復制代碼 代碼如下:
// 方式1
function func1(x,y){
// your code
}
// 方式2
var func2 = function(x,y){
// your code
}

方式1 是典型的函數聲明(Function declarations)。
方式2 是函數表達式(Function expressions),將一個匿名函數賦值給一個變量。或者說方式2中創建了一個具有形參為x,y的匿名函數,然後把該匿名函數賦值給變量func2。

其主要區別在於:
1, 函數聲明需顯示的指定函數名,這裡是func1;函數表達式則使用匿名函數
2, 方式1在代碼執行之前(解釋期)被加載到作用域中,方式2則需在代碼執行時(運行期)加載

一個簡單示例就明白了它們在使用上的區別
復制代碼 代碼如下:
alert(func1); // --> func1源碼
alert(func2); // --> undefined
// 方式1
function func1(x,y){
// your code
}
// 方式2
var func2 = function(x,y){
// your code
}

可以看到,第一次彈出的是func1的源碼,第二次卻是undefined。即采用方式1(函數聲明)定義函數,可以在該函數代碼之上使用它,采用方式2(函數表達式)定義函數則不能在其定義前使用,只能在其定義後使用。

其內部涉及到 執行上下文(Execution context)及 激活對象(Activation object)。想更深了解的請閱讀EcmaScript 5文檔。

最近發現越來越多的人喜歡使用方式2定義函數,尤其在嵌套函數中。如單純的定義一個函數個人還是習慣方式1。
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved