欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

javascript 兩種聲明函數(shù)的方式的分析

 更新時(shí)間:2017年02月08日 10:06:24   投稿:lqh  
這篇文章主要介紹了javascript 兩種聲明函數(shù)的方式的分析的相關(guān)資料,需要的朋友可以參考下

javascript 聲明函數(shù)

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

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

區(qū)別一

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

方式二的聲明方式可以先調(diào)用,后聲明

/*方式一:
 *先聲明后使用
 */

//f1();這里調(diào)用就會出錯(cuò) 
var f1 = function () {
     alert("var方式");
}
f1();//這里使用才正確

/*方式二:
 *可以先使用后聲明
 */

f2(); //這里調(diào)用可以正常執(zhí)行 
function f2 () {
     alert("function方式");
}
f2();//這里調(diào)用可以正常執(zhí)行

區(qū)別二

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

下面看一個(gè)例子:

function f() {
 alert('1');
}

f(); // 彈窗內(nèi)容是:2

function f() {
 alert ('2');
}

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

function f() {
 alert('1');
}

function f() {
 alert ('2');//申明前置了,但因?yàn)檫@里的申明和賦值在一起,所以一起前置
}

f(); // 彈窗內(nèi)容是:2

下面再看一個(gè)例子:

var f= function() {
 alert('1');
}

f(); // 彈窗內(nèi)容是:1

function f() {
 alert ('2');
}

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

var f; //申明前置了
function f() {
 alert('1');
}

f(); // 彈窗內(nèi)容是:1

function f() {
 alert ('2');
}

最后再看一個(gè)例子:

f(); //第一次調(diào)用函數(shù) 彈窗內(nèi)容是:2

var f= function() {
 alert('1');
}

f(); //第二次調(diào)用函數(shù) 彈窗內(nèi)容是:1

function f() {
 alert ('2');
}
f(); //第三次調(diào)用函數(shù) 彈窗內(nèi)容是:1

看到結(jié)果大家應(yīng)該都明白了吧。

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

相關(guān)文章

  • C語言實(shí)現(xiàn)線性動(dòng)態(tài)(單向)鏈表的示例代碼

    C語言實(shí)現(xiàn)線性動(dòng)態(tài)(單向)鏈表的示例代碼

    本文主要介紹了C語言實(shí)現(xiàn)線性動(dòng)態(tài)(單向)鏈表的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • 關(guān)于單片機(jī)按鍵問題性能提升總結(jié)

    關(guān)于單片機(jī)按鍵問題性能提升總結(jié)

    今天小編就為大家分享一篇關(guān)于關(guān)于單片機(jī)按鍵問題性能提升總結(jié),小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • C++中地圖按鍵排序?qū)崿F(xiàn)示例

    C++中地圖按鍵排序?qū)崿F(xiàn)示例

    這篇文章主要為大家介紹了C++中地圖按鍵排序?qū)崿F(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • C++數(shù)據(jù)結(jié)構(gòu)之二叉搜索樹的實(shí)現(xiàn)詳解

    C++數(shù)據(jù)結(jié)構(gòu)之二叉搜索樹的實(shí)現(xiàn)詳解

    二叉搜索樹作為一個(gè)經(jīng)典的數(shù)據(jù)結(jié)構(gòu),具有鏈表的快速插入與刪除的特點(diǎn),同時(shí)查詢效率也很優(yōu)秀,所以應(yīng)用十分廣泛。本文將詳細(xì)講講二叉搜索樹的C++實(shí)現(xiàn),需要的可以參考一下
    2022-08-08
  • C語言實(shí)現(xiàn)九大排序算法的實(shí)例代碼

    C語言實(shí)現(xiàn)九大排序算法的實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于C語言實(shí)現(xiàn)九大排序算法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Opencv圖像處理之圖像增加邊框

    Opencv圖像處理之圖像增加邊框

    這篇文章主要為大家詳細(xì)介紹了Opencv圖像處理之圖像增加邊框,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • C語言實(shí)現(xiàn)會員管理系統(tǒng)

    C語言實(shí)現(xiàn)會員管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)會員管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • c++中const的使用詳解

    c++中const的使用詳解

    本篇文章是對c++中的const的應(yīng)用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • 詳解C++中的指針、數(shù)組指針與函數(shù)指針

    詳解C++中的指針、數(shù)組指針與函數(shù)指針

    本文從初學(xué)者的角度,深入淺出地講解C++中的指針、數(shù)組指針與函數(shù)指針,對最?;煜囊脗鬟f、值傳遞和指針傳遞做了區(qū)處,需要的朋友可以參考下
    2015-07-07
  • C++實(shí)現(xiàn)LeetCode(198.打家劫舍)

    C++實(shí)現(xiàn)LeetCode(198.打家劫舍)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(198.打家劫舍),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08

最新評論