国产探花免费观看_亚洲丰满少妇自慰呻吟_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。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 蚌埠市| 永平县| 通山县| 洪雅县| 西宁市| 德清县| 大安市| 津市市| 鄯善县| 敖汉旗| 阜阳市| 汉川市| 高台县| 沾益县| 合阳县| 那曲县| 和龙市| 巢湖市| 若尔盖县| 高唐县| 嘉禾县| 呼伦贝尔市| 玉田县| 新丰县| 勐海县| 波密县| 繁昌县| 文安县| 略阳县| 陆河县| 汝城县| 嫩江县| 辽中县| 宝清县| 诏安县| 白沙| 名山县| 商都县| 洞头县| 石泉县| 麟游县|