国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JS兩種定義方式的區別、內部原理

2024-05-06 15:55:54
字體:
來源:轉載
供稿:網友
方式1 是典型的函數聲明(Function declarations)。方式2 是函數表達式(Function expressions),未必所有人都知道其區別,內部原理

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

復制代碼 代碼如下:


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


方式1 是典型的函數聲明(Function declarations)。
方式2 是函數表達式(Function expressions),將一個匿名函數賦值給一個變量?;蛘哒f方式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。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 牡丹江市| 宣城市| 诏安县| 平遥县| 民和| 定西市| 股票| 东莞市| 江陵县| 陇南市| 云林县| 伽师县| 乌苏市| 特克斯县| 大安市| 柳林县| 廊坊市| 池州市| 庆城县| 墨江| 鸡东县| 靖边县| 东安县| 巍山| 新昌县| 遂平县| 遂溪县| 黑河市| 永春县| 水城县| 原平市| 怀仁县| 广平县| 平南县| 岳阳县| 乐至县| 乌拉特后旗| 奎屯市| 浦城县| 潜江市| 大港区|