• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    JavaScript中函數(shù)表達式和函數(shù)聲明及函數(shù)聲明與函數(shù)表達式的不同_javascript技巧

    來源:懂視網(wǎng) 責編:小采 時間:2020-11-27 21:45:36
    文檔

    JavaScript中函數(shù)表達式和函數(shù)聲明及函數(shù)聲明與函數(shù)表達式的不同_javascript技巧

    JavaScript中函數(shù)表達式和函數(shù)聲明及函數(shù)聲明與函數(shù)表達式的不同_javascript技巧:函數(shù)表達式和函數(shù)聲明 在ECMAScript中,創(chuàng)建函數(shù)的最常用的兩個方法是函數(shù)表達式和函數(shù)聲明,兩者期間的區(qū)別是有點暈,因為ECMA規(guī)范只明確了一點:函數(shù)聲明必須帶有標示符(Identifier)(就是大家常說的函數(shù)名稱),而函數(shù)表達式則可以省略這個標示符:
    推薦度:
    導讀JavaScript中函數(shù)表達式和函數(shù)聲明及函數(shù)聲明與函數(shù)表達式的不同_javascript技巧:函數(shù)表達式和函數(shù)聲明 在ECMAScript中,創(chuàng)建函數(shù)的最常用的兩個方法是函數(shù)表達式和函數(shù)聲明,兩者期間的區(qū)別是有點暈,因為ECMA規(guī)范只明確了一點:函數(shù)聲明必須帶有標示符(Identifier)(就是大家常說的函數(shù)名稱),而函數(shù)表達式則可以省略這個標示符:

    函數(shù)表達式和函數(shù)聲明

    在ECMAScript中,創(chuàng)建函數(shù)的最常用的兩個方法是函數(shù)表達式和函數(shù)聲明,兩者期間的區(qū)別是有點暈,因為ECMA規(guī)范只明確了一點:函數(shù)聲明必須帶有標示符(Identifier)(就是大家常說的函數(shù)名稱),而函數(shù)表達式則可以省略這個標示符:

      函數(shù)聲明:

      function 函數(shù)名稱 (參數(shù):可選){ 函數(shù)體 }

      函數(shù)表達式:

      function 函數(shù)名稱(可選)(參數(shù):可選){ 函數(shù)體 }

    所以,可以看出,如果不聲明函數(shù)名稱,它肯定是表達式,可如果聲明了函數(shù)名稱的話,如何判斷是函數(shù)聲明還是函數(shù)表達式呢?ECMAScript是通過上下文來區(qū)分的,如果function foo(){}是作為賦值表達式的一部分的話,那它就是一個函數(shù)表達式,如果function foo(){}被包含在一個函數(shù)體內(nèi),或者位于程序的最頂部的話,那它就是一個函數(shù)聲明。

    還有一種函數(shù)表達式不太常見,就是被括號括住的(function foo(){}),他是表達式的原因是因為括號 ()是一個分組操作符,它的內(nèi)部只能包含表達式,我們來看幾個例子:

    function foo(){} // 函數(shù)聲明
    (function foo(){}); // 函數(shù)表達式:包含在分組操作符內(nèi)

    命名函數(shù)表達式

    提到命名函數(shù)表達式,理所當然,就是它得有名字,前面的例子var bar = function foo(){};就是一個有效的命名函數(shù)表達式,但有一點需要記住:這個名字只在新定義的函數(shù)作用域內(nèi)有效,因為規(guī)范規(guī)定了標示符不能在外圍的作用域內(nèi)有效:

    既然,這么要求,那命名函數(shù)表達式到底有啥用啊?為啥要取名?

    正如我們開頭所說:給它一個名字就是可以讓調(diào)試過程更方便,因為在調(diào)試的時候,如果在調(diào)用棧中的每個項都有自己的名字來描述,那么調(diào)試過程就太爽了,感受不一樣嘛。

    ps:JS中函數(shù)聲明與函數(shù)表達式的不同

    Js中的函數(shù)聲明是指下面的形式:


    這樣的方式來聲明一個函數(shù),而函數(shù)表達式則是類似表達式那樣來聲明一個函數(shù),如:


    可能很多朋友在看到這兩一種寫法時會產(chǎn)生疑惑,這兩種寫法差不多,在應(yīng)用中貌似也都是可行的,那他們有什么差別呢?

    事實上,js的解析器對函數(shù)聲明與函數(shù)表達式并不是一視同仁地對待的。對于函數(shù)聲明,js解析器會優(yōu)先讀取,確保在所有代碼執(zhí)行之前聲明已經(jīng)被解析,而函數(shù)表達式,如同定義其它基本類型的變量一樣,只在執(zhí)行到某一句時也會對其進行解析,所以在實際中,它們還是會有差異的,具體表現(xiàn)在,當使用函數(shù)聲明的形式來定義函數(shù)時,可將調(diào)用語句寫在函數(shù)聲明之前,而后者,這樣做的話會報錯。

    聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    JavaScript中函數(shù)表達式和函數(shù)聲明及函數(shù)聲明與函數(shù)表達式的不同_javascript技巧

    JavaScript中函數(shù)表達式和函數(shù)聲明及函數(shù)聲明與函數(shù)表達式的不同_javascript技巧:函數(shù)表達式和函數(shù)聲明 在ECMAScript中,創(chuàng)建函數(shù)的最常用的兩個方法是函數(shù)表達式和函數(shù)聲明,兩者期間的區(qū)別是有點暈,因為ECMA規(guī)范只明確了一點:函數(shù)聲明必須帶有標示符(Identifier)(就是大家常說的函數(shù)名稱),而函數(shù)表達式則可以省略這個標示符:
    推薦度:
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 久久精品国产欧美日韩| 国产高清日韩精品欧美激情| 国产成人精品视频在放| 老司机精品影院91| 欧美精品在线一区| 久久精品国产亚洲77777| 久99久无码精品视频免费播放 | 色花堂国产精品第一页| 亚洲精品制服丝袜四区| 国产香蕉国产精品偷在线| 国产精品国产精品国产专区不卡 | 国产香蕉国产精品偷在线| 精品久久一区二区| 国产剧情国产精品一区| 亚洲日韩精品射精日| 四虎影视永久在线精品| 精品无人区无码乱码毛片国产| 亚洲精品高清视频| 国产精品视频免费| 91精品国产自产在线观看永久| 亚洲国产一二三精品无码| 久久精品无码av| 国产午夜精品理论片| 91精品国产91热久久久久福利| 九九99精品久久久久久| 国产成人精品久久一区二区三区 | 亚洲精品成人网站在线观看| 亚洲精品第一国产综合精品99| 免费看污污的网站欧美国产精品不卡在线观看| 91久久精品国产免费直播| 欧美精品一区二区精品久久 | 国产精品无码v在线观看| 亚洲日韩精品欧美一区二区| 精品午夜久久福利大片| 国内精品久久久久| 精品久久一区二区三区| 久久er国产精品免费观看2| 国产成人精品日本亚洲直接| 99re6在线视频精品免费| 国产精品久久久久久吹潮| 国产精品岛国久久久久|