麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 編程 > JavaScript > 正文

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

2019-11-20 21:37:09
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
相信兩種方式大家都用過(guò),但未必所有人都知道其 區(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è)變量。或者說(shuō)方式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è)簡(jiǎn)單示例就明白了它們?cè)谑褂蒙系膮^(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)及 激活對(duì)象(Activation object)。想更深了解的請(qǐng)閱讀EcmaScript 5文檔。

最近發(fā)現(xiàn)越來(lái)越多的人喜歡使用方式2定義函數(shù),尤其在嵌套函數(shù)中。如單純的定義一個(gè)函數(shù)個(gè)人還是習(xí)慣方式1。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 久久精品亚洲精品国产欧美kt∨ | 欧美黄色一级带 | 欧产日产国产精品99 | 欧美另类视频在线 | 欧美爱爱视频免费看 | 免费一区二区三区 | 国产精品欧美日韩一区二区 | 深夜福利久久久 | 精品成人av一区二区三区 | 一区二区三区欧美在线 | 国产成人综合在线视频 | videos高潮| wwwxxx国产| 亚洲国产精品久久久久 | 欧美日韩在线视频一区 | 午夜精品小视频 | 国产精品一区网站 | 久久成人激情视频 | 久久精品中文字幕一区 | 欧美成人免费电影 | 久久精品23| 狠狠操天天射 | www视频免费在线观看 | hd极品free性xxx护士人 | 日本黄色大片免费 | 亚洲小视频网站 | 成人毛片100部免费观看 | 免费一级毛片电影 | 国产一精品久久99无吗一高潮 | a集毛片| 综合国产在线 | 日本网站在线播放 | 成人免费久久网 | 成人午夜视频免费在线观看 | 久久精品国产99国产精品亚洲 | 国产又白又嫩又紧又爽18p | 亚洲第一页在线观看 | 又黄又爽免费无遮挡在线观看 | 一级做a爱片久久 | 特黄一级小说 | www国产成人免费观看视频,深夜成人网 |