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

首頁 > 編程 > C++ > 正文

javascript 兩種聲明函數的方式的分析

2020-05-23 13:53:20
字體:
來源:轉載
供稿:網友

javascript 聲明函數

JavaScript有兩種聲明函數的方式,一個是函數表達式定義函數,也就是我們說的匿名函數方式,一個是函數語句定義函數,下面看代碼:

/*方式一*/var FUNCTION_NAME = function() { /* FUNCTION_BODY */};/*方式二*/function FUNCTION_NAME () { /* FUNCTION_BODY */}; 

區別一

方式一的聲明方式是先聲明后使用

方式二的聲明方式可以先調用,后聲明

/*方式一: *先聲明后使用 *///f1();這里調用就會出錯 var f1 = function () {     alert("var方式");}f1();//這里使用才正確/*方式二: *可以先使用后聲明 */f2(); //這里調用可以正常執行 function f2 () {     alert("function方式");}f2();//這里調用可以正常執行

區別二

//方式一var FUNCTION_NAME = function() { /* FUNCTION_BODY */};/*這種方式,編譯后變量聲明 FUNCTION_NAME 會“被提前”了,但是他的賦值(也就是FUNCTION_BODY)并不會被提前。匿名函數只有在被調用時才被初始化。*///方式二function FUNCTION_NAME () { /* FUNCTION_BODY */}; /*這種方式, 編譯后 函數聲明 和 賦值 都會被提前。即函數聲明過程在整個程序執行之前的預處理就完成了,所以只要處于同一個作用域,就可以訪問到,即使在定義之前調用它也可以。*/

下面看一個例子:

function f() { alert('1');}f(); // 彈窗內容是:2function f() { alert ('2');}

運行時 f() 執行的是alert (‘2');主要原因是JavaScript 函數聲明的“提前”行為,簡而言之,就是Javascript允許我們在變量和函數被聲明之前使用它們,而第二個定義覆蓋了第一種定義。換句話說,上述代碼編譯之后相當于:

function f() { alert('1');}function f() { alert ('2');//申明前置了,但因為這里的申明和賦值在一起,所以一起前置}f(); // 彈窗內容是:2

下面再看一個例子:

var f= function() { alert('1');}f(); // 彈窗內容是:1function f() { alert ('2');}

這里就是我們期待的behavior,這段程序編譯之后相當于:

var f; //申明前置了function f() { alert('1');}f(); // 彈窗內容是:1function f() { alert ('2');}

最后再看一個例子:

f(); //第一次調用函數 彈窗內容是:2var f= function() { alert('1');}f(); //第二次調用函數 彈窗內容是:1function f() { alert ('2');}f(); //第三次調用函數 彈窗內容是:1

看到結果大家應該都明白了吧。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 伊川县| 武陟县| 陕西省| 万全县| 五莲县| 千阳县| 定陶县| 靖安县| 定边县| 山西省| 喀什市| 高碑店市| 阳原县| 嘉荫县| 兰西县| 河东区| 威信县| 安新县| 湛江市| 巍山| 新乡县| 安平县| 松阳县| 剑阁县| 天津市| 沐川县| 瑞丽市| 黔东| 新昌县| 宜丰县| 云霄县| 横峰县| 西林县| 新邵县| 衡阳县| 都兰县| 东港市| 鹤山市| 南城县| 含山县| 葵青区|