欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JS兩種定義方式的區(qū)別、內(nèi)部原理

 更新時(shí)間:2013年11月21日 15:07:05   投稿:whsnow  
方式1 是典型的函數(shù)聲明(Function declarations)。方式2 是函數(shù)表達(dá)式(Function expressions),未必所有人都知道其區(qū)別,內(nèi)部原理

相信兩種方式大家都用過,但未必所有人都知道其 區(qū)別,內(nèi)部原理。

復(fù)制代碼 代碼如下:

// 方式1
function func1(x,y){
// your code
}
// 方式2
var func2 = function(x,y){
// your code
}

方式1 是典型的函數(shù)聲明(Function declarations)。
方式2 是函數(shù)表達(dá)式(Function expressions),將一個(gè)匿名函數(shù)賦值給一個(gè)變量?;蛘哒f方式2中創(chuàng)建了一個(gè)具有形參為x,y的匿名函數(shù),然后把該匿名函數(shù)賦值給變量func2。

其主要區(qū)別在于:
1, 函數(shù)聲明需顯示的指定函數(shù)名,這里是func1;函數(shù)表達(dá)式則使用匿名函數(shù)
2, 方式1在代碼執(zhí)行之前(解釋期)被加載到作用域中,方式2則需在代碼執(zhí)行時(shí)(運(yùn)行期)加載

一個(gè)簡單示例就明白了它們在使用上的區(qū)別
復(fù)制代碼 代碼如下:

alert(func1); // --> func1源碼
alert(func2); // --> undefined
// 方式1
function func1(x,y){
// your code
}
// 方式2
var func2 = function(x,y){
// your code
}

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

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

最近發(fā)現(xiàn)越來越多的人喜歡使用方式2定義函數(shù),尤其在嵌套函數(shù)中。如單純的定義一個(gè)函數(shù)個(gè)人還是習(xí)慣方式1。

相關(guān)文章

  • 詳解Node.js模塊間共享數(shù)據(jù)庫連接的方法

    詳解Node.js模塊間共享數(shù)據(jù)庫連接的方法

    我們可以寫一個(gè)統(tǒng)一的數(shù)據(jù)庫連接模塊來供本地Node環(huán)境下各模塊間共享使用,接下來就來詳解Node.js模塊間共享數(shù)據(jù)庫連接的方法
    2016-05-05
  • JavaScript使用escape()、encodeURI()和decodeURI()實(shí)現(xiàn)URI編碼解碼

    JavaScript使用escape()、encodeURI()和decodeURI()實(shí)現(xiàn)URI編碼解碼

    這篇文章介紹了JavaScript使用escape()、encodeURI()和decodeURI()實(shí)現(xiàn)URI編碼解碼的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • 深入理解JavaScript中的語法和代碼結(jié)構(gòu)

    深入理解JavaScript中的語法和代碼結(jié)構(gòu)

    這篇文章主要介紹了JavaScript中的語法和代碼結(jié)構(gòu),對JS初學(xué)者而言,這些基礎(chǔ)一定要看一下
    2021-05-05
  • JavaScript數(shù)值類型知識匯總

    JavaScript數(shù)值類型知識匯總

    這篇文章主要給大家介紹了關(guān)于JavaScript數(shù)值類型知識匯總的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用JavaScript具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Js刪除數(shù)組中某一項(xiàng)或幾項(xiàng)的幾種方法(推薦)

    Js刪除數(shù)組中某一項(xiàng)或幾項(xiàng)的幾種方法(推薦)

    下面小編就為大家?guī)硪黄狫s刪除數(shù)組中某一項(xiàng)或幾項(xiàng)的幾種方法(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-07-07
  • JS函數(shù)定義方式的區(qū)別介紹

    JS函數(shù)定義方式的區(qū)別介紹

    下面小編就為大家?guī)硪黄狫S函數(shù)定義方式的區(qū)別介紹。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,給大家一個(gè)參考。一起跟隨小編過來看看吧
    2016-03-03
  • Javascript的作用域、作用域鏈以及閉包詳解

    Javascript的作用域、作用域鏈以及閉包詳解

    本文詳細(xì)講解了Javascript的作用域、作用域鏈以及閉包,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • JS中for循序中延遲加載動(dòng)態(tài)效果的具體實(shí)現(xiàn)

    JS中for循序中延遲加載動(dòng)態(tài)效果的具體實(shí)現(xiàn)

    今天在做一個(gè)前端的效果的時(shí)候碰到一個(gè)棘手的問題,就是實(shí)現(xiàn)一個(gè)動(dòng)態(tài)的圓柱效果,廢話不多少,直接上代碼
    2013-08-08
  • 淺析JavaScript中的對象類型Object

    淺析JavaScript中的對象類型Object

    盡管JavaScript的擁躉一再強(qiáng)調(diào)js的面相對象,然而,或許只有在名為Object的這一類型中才能勉強(qiáng)理解出-- well...下面就讓我們一起來淺析JavaScript中的對象類型Object
    2016-05-05
  • 傳智播客學(xué)習(xí)之JavaScript基礎(chǔ)篇

    傳智播客學(xué)習(xí)之JavaScript基礎(chǔ)篇

    前幾天學(xué)習(xí)了JavaScript,但是一直由于忙碌的原因,沒有來得及進(jìn)行總結(jié),今天終于有時(shí)間進(jìn)行一個(gè)全面總結(jié)了,希望給正在努力學(xué)習(xí)的朋友們一點(diǎn)小小幫助。
    2009-11-11

最新評論