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

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

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

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

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

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

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

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

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

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

  除了聲明時候可以通過變量訪問函數(shù)這一點區(qū)別之外,函數(shù)聲明與函數(shù)表達式的語法其實是等價的。

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

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

相關(guān)文章

  • JS中sort函數(shù)排序用法實例分析

    JS中sort函數(shù)排序用法實例分析

    這篇文章主要介紹了JS中sort函數(shù)排序用法,結(jié)合實例形式詳細分析了sort函數(shù)的功能、原理及實現(xiàn)數(shù)組排序的相關(guān)技巧,代碼中備有詳盡的注釋便于理解,需要的朋友可以參考下
    2016-06-06
  • 淺談JavaScript中指針和地址

    淺談JavaScript中指針和地址

    Javascript是一門基于對象的動態(tài)語言,也就是說,所有東西都是對象,一個很典型的例子就是函數(shù)也被視為普通的對象。Javascript可以通過一定的設(shè)計模式來實現(xiàn)面向?qū)ο蟮木幊蹋渲衪his指針就是實現(xiàn)面向?qū)ο蟮囊粋€很重要的特性。
    2015-07-07
  • javascript實現(xiàn)自由編輯圖片代碼詳解

    javascript實現(xiàn)自由編輯圖片代碼詳解

    這篇文章主要介紹了javascript實現(xiàn)自由編輯圖片代碼詳解,在當下的的前端項目中,圖片功能可以說是非常常見的,圖片的展示、圖片的裁剪編輯、圖片的上傳等,那么我們的項目便來了個需求。,需要的朋友可以參考下
    2019-06-06
  • 分享一道筆試題[有n個直線最多可以把一個平面分成多少個部分]

    分享一道筆試題[有n個直線最多可以把一個平面分成多少個部分]

    今天地鐵上和一個同事閑聊,給我說的一道題,回來想了想,寫出來的,說來慚愧,我用的是行測方面數(shù)字推理里面的知識歸納出來的,當然這個可以用遞歸寫出來,說說我的代碼,以及遞歸的思路
    2012-10-10
  • javascript自定義in_array()函數(shù)實現(xiàn)方法

    javascript自定義in_array()函數(shù)實現(xiàn)方法

    這篇文章主要介紹了javascript自定義in_array()函數(shù)實現(xiàn)方法,涉及javascript數(shù)組的遍歷與查找相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08
  • JS實現(xiàn)iframe自適應(yīng)高度的方法(兼容IE與FireFox)

    JS實現(xiàn)iframe自適應(yīng)高度的方法(兼容IE與FireFox)

    這篇文章主要介紹了JS實現(xiàn)iframe自適應(yīng)高度的方法,涉及javascript與iframe交互動態(tài)操作頁面元素屬性的相關(guān)技巧,需要的朋友可以參考下
    2016-06-06
  • 將查詢條件的input、select清空

    將查詢條件的input、select清空

    查詢條件清空將input、select的值清空,下面有個不錯的示例,需要的朋友可以了解下
    2014-01-01
  • 顯示js對象所有屬性和方法的函數(shù)

    顯示js對象所有屬性和方法的函數(shù)

    顯示js對象所有屬性和方法,從網(wǎng)上整理了不少,大家可以看下原理都是差不多的。
    2009-10-10
  • javascript實現(xiàn)平滑無縫滾動

    javascript實現(xiàn)平滑無縫滾動

    這篇文章主要為大家詳細介紹了javascript實現(xiàn)平滑無縫滾動的具體代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-05-05
  • javascript AOP 實現(xiàn)ajax回調(diào)函數(shù)使用比較方便

    javascript AOP 實現(xiàn)ajax回調(diào)函數(shù)使用比較方便

    javascript AOP 實現(xiàn)ajax回調(diào)函數(shù)使用比較方便,需要的朋友可以參考下。
    2010-11-11

最新評論