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

首頁 > 編程 > JavaScript > 正文

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

2019-11-20 21:37:09
字體:
來源:轉載
供稿:網友
相信兩種方式大家都用過,但未必所有人都知道其 區別,內部原理。
復制代碼 代碼如下:

// 方式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。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 从江县| 柏乡县| 龙陵县| 德州市| 安仁县| 特克斯县| 平安县| 东乡族自治县| 阳春市| 昌平区| 汪清县| 盐源县| 桐梓县| 河间市| 海口市| 七台河市| 奉新县| 洞口县| 巨野县| 包头市| 双柏县| 阿克| 泌阳县| 鄂托克前旗| 大厂| 龙胜| 富裕县| 奎屯市| 砀山县| 闽清县| 黄山市| 通榆县| 锡林浩特市| 佳木斯市| 南木林县| 定日县| 和田市| 敖汉旗| 兴安盟| 阿巴嘎旗| 富锦市|