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

首頁 > 編程 > C > 正文

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

2020-01-26 14:15:30
字體:
來源:轉載
供稿:網友

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

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 吉首市| 通海县| 白城市| 南昌市| 新竹市| 大厂| 福清市| 广平县| 岗巴县| 新巴尔虎左旗| 镇原县| 贡山| 托克逊县| 遂平县| 通城县| 长丰县| 彭水| 广汉市| 望都县| 建宁县| 渭南市| 怀宁县| 平江县| 会东县| 绵竹市| 隆回县| 周口市| 资兴市| 万载县| 伊吾县| 巴塘县| 东乡族自治县| 平利县| 若尔盖县| 金华市| 晋城| 金门县| 葫芦岛市| 新余市| 金门县| 霸州市|