国产探花免费观看_亚洲丰满少妇自慰呻吟_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

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

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南丰县| 水城县| 馆陶县| 交城县| 乐至县| 郧西县| 兰西县| 防城港市| 同仁县| 渭南市| 高要市| 富裕县| 康乐县| 余庆县| 静海县| 澎湖县| 望奎县| 兰坪| 花垣县| 微山县| 汝南县| 保定市| 新田县| 伊吾县| 稻城县| 龙里县| 安福县| 连云港市| 石棉县| 齐齐哈尔市| 敖汉旗| 宁城县| 炉霍县| 靖远县| 抚宁县| 九江县| 婺源县| 富蕴县| 基隆市| 元江| 临洮县|