• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題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關鍵字專題關鍵字專題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中函數表達式和函數聲明及函數聲明與函數表達式的不同_javascript技巧

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

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

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

    函數表達式和函數聲明

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

      函數聲明:

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

      函數表達式:

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

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

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

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

    命名函數表達式

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

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

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

    ps:JS中函數聲明與函數表達式的不同

    Js中的函數聲明是指下面的形式:


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


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

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

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

    文檔

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

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

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 日韩精品亚洲专区在线观看| 亚洲综合精品香蕉久久网| 久久国产美女免费观看精品| 老司机亚洲精品影院无码| 国产精品永久久久久久久久久| 国产精品免费看久久久| 亚洲&#228;v永久无码精品天堂久久| 久久精品国产精品亚洲精品| 午夜欧美精品久久久久久久| 久久精品成人免费观看97| 四虎精品影院4hutv四虎| 国产精品区一区二区三在线播放 | 久久精品国产亚洲AV嫖农村妇女| 久久久精品视频免费观看| 99精品福利国产在线| 国产精品视频久久| 99久久99久久精品免费看蜜桃| 亚洲精品成人网站在线观看| 男女男精品网站免费观看| 办公室久久精品| 亚洲欧美日韩精品久久| 99久久精品国产麻豆| 精品无人码麻豆乱码1区2区| 影院无码人妻精品一区二区| 日韩精品国产自在欧美| 国产精品成人69XXX免费视频| 亚洲国产精品久久久久久| 国产成人精品男人的天堂538| 99国产欧美精品久久久蜜芽| 97精品国产一区二区三区| 91视频精品全国免费观看| 国产精品亚洲片在线| 老司机亚洲精品影院| 亚洲Av无码精品色午夜 | 免费91麻豆精品国产自产在线观看 | 亚洲综合国产精品第一页 | 亚洲精品乱码久久久久久久久久久久| 久久久无码精品亚洲日韩软件| 国内精品久久久久久久久| 国产微拍精品一区二区| 精品99久久aaa一级毛片|