最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js中函數(shù)聲明與函數(shù)表達(dá)式

 更新時(shí)間:2015年06月03日 11:09:59   投稿:hebedich  
js的解析器對(duì)函數(shù)聲明與函數(shù)表達(dá)式并不是一視同仁地對(duì)待的。對(duì)于函數(shù)聲明,js解析器會(huì)優(yōu)先讀取,確保在所有代碼執(zhí)行之前聲明已經(jīng)被解析,而函數(shù)表達(dá)式,如同定義其它基本類型的變量一樣,只在執(zhí)行到某一句時(shí)也會(huì)對(duì)其進(jìn)行解析,

目前為止,我們一直沒(méi)有對(duì)函數(shù)聲明和函數(shù)表達(dá)式加以區(qū)別。而實(shí)際上,解析器在向執(zhí)行環(huán)境中加載數(shù)據(jù)時(shí),對(duì)函數(shù)聲明和函數(shù)表達(dá)式并非一視同仁。解析器會(huì)率先讀取函數(shù)聲明,并使其在執(zhí)行任何代碼之前可用(可以訪問(wèn));至于函數(shù)表達(dá)式,則必須等到解析器執(zhí)行到它所在的代碼行,才會(huì)真正被解釋執(zhí)行。如下例子:

復(fù)制代碼 代碼如下:

alert(sum(10,10));
function sum(num1,num2)
{
    return num1+num2;
}

  以上代碼完全可以正確執(zhí)行,因?yàn)樵诖a開(kāi)始執(zhí)行之前,解析器就已經(jīng)通過(guò)一個(gè)名為函數(shù)聲明提升(function declaration hoisting)的過(guò)程,讀取并將函數(shù)聲明添加到執(zhí)行環(huán)境中。對(duì)代碼求值時(shí),JavaScript引擎在第一遍會(huì)聲明函數(shù)并將它們放到源代碼樹(shù)的頂部。所以,即使聲明函數(shù)的代碼在調(diào)用它的代碼后面,JavaScript引擎也能把函數(shù)聲明提升到頂部。如果像下面的例子所示,把上面的函數(shù)聲明改為等價(jià)的函數(shù)表達(dá)式,就會(huì)在執(zhí)行的時(shí)候出現(xiàn)錯(cuò)誤。

復(fù)制代碼 代碼如下:

alert(sum(10,10));
var sum=function(num1,num2)
{
    return num1+num2;
};

  以上代碼會(huì)在運(yùn)行的時(shí)候出現(xiàn)錯(cuò)誤,原因在于函數(shù)位于一個(gè)初始化語(yǔ)句中,而不是一個(gè)函數(shù)聲明。換句話講,在執(zhí)行到函數(shù)所在的語(yǔ)句之前,變量sum中不會(huì)保存有對(duì)函數(shù)的引用;而且,由于第一行代碼就會(huì)導(dǎo)致“unexpected identifier”(意外標(biāo)識(shí)符)錯(cuò)誤,實(shí)際上也不會(huì)執(zhí)行到下一行。

  除了聲明時(shí)候可以通過(guò)變量訪問(wèn)函數(shù)這一點(diǎn)區(qū)別之外,函數(shù)聲明與函數(shù)表達(dá)式的語(yǔ)法其實(shí)是等價(jià)的。

  注:也可以同時(shí)調(diào)用函數(shù)聲明和函數(shù)表達(dá)式,例如 var sum=function sum(){}。不過(guò),這種語(yǔ)法在Safari中會(huì)導(dǎo)致錯(cuò)誤。

以上所述就是本文的全部?jī)?nèi)容了,希望對(duì)大家學(xué)習(xí)javascript能夠有所幫助。

相關(guān)文章

最新評(píng)論

清远市| 张家港市| 静安区| 浮梁县| 牟定县| 太仓市| 合川市| 温宿县| 昂仁县| 澄江县| 沈丘县| 泽库县| 杨浦区| 印江| 浮梁县| 凤庆县| 全椒县| 邵东县| 绥阳县| 富宁县| 米易县| 镇原县| 井陉县| 阳原县| 苗栗县| 定安县| 江口县| 高淳县| 弥渡县| 定远县| 历史| 介休市| 资兴市| 台湾省| 嘉鱼县| 九台市| 巧家县| 兰西县| 仪陇县| 鸡西市| 邵武市|