中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

淺析函數聲明和函數表達式-函數聲明的聲明提前
來源:易賢網 閱讀:923 次 日期:2016-07-06 10:35:04
溫馨提示:易賢網小編為您整理了“淺析函數聲明和函數表達式-函數聲明的聲明提前”,方便廣大網友查閱!

下面小編就為大家帶來一篇淺析函數聲明和函數表達式——函數聲明的聲明提前。小編覺得挺不錯的,現在分享給大家,也給大家做個參考。

前兩天班級聚會,除了吃喝玩樂就是睡覺扯淡,甚是喜悅,真是獨樂樂不如眾樂樂啊。

PS:畢業的或即將畢業的有時間能聚就聚吧,畢了業以后屬于自己的時間能聚到一塊兒可就少太多了。

現在有點時間來看點東西總結些東西了,又因為前段時間片片斷斷地看了看JavaScript的函數部分,所以抽時間總結下函數的相關部分,當然,里面有些部分都是自己的理解,如果有理解的不對的地方還請小伙伴們不吝指出。

這一節我結合自己的理解和小伙伴們聊一下函數聲明的聲明提前。

注:有的地方也叫函數聲明提升。翻譯的不一樣,意思一樣,大家理解就行。理解萬歲!

在聊函數聲明的聲明提前之前,有必要介紹下函數定義的幾種方法,大部分小伙伴們應該都不陌生。了解的或者不想了解的就痛快地一滾輪滾下去吧,不熟悉的或者想再熟悉一下的就放慢腳步起步走。

定義函數的方法

定義函數的方法主要有三種:

1.函數聲明(Function Declaration)

2.函數表達式Function Expression)

3.new Function構造函數

其中,經常使用的是函數聲明和函數表達式的函數定義方法,這兩種方法有著很微妙的區別和聯系,而且這兩種方法的使用也容易混淆,所以這篇文章主要總結下這兩種函數定義方法的相關知識點,當然本文的主題依然是關于函數提前的。

函數聲明的典型格式:

function functionName(arg1, arg2, ...){

  <!-- function body -->

}

函數表達式

•函數表達式的典型格式:

var variable=function(arg1, arg2, ...){

      <!-- function body -->

}

包含名稱(括弧,函數名)的函數表達式:

var variable=function functionName(arg1, arg2, ...){

    <!-- function body -->

}

像上面的帶有名稱的函數表達式可以用來遞歸:

var variable=function functionName(x){

    if(x<=1)

      return 1;

    else

      return x*functionName(x);

}

聲明提前

var聲明提前

小伙伴們應該都聽說過聲明提前的說法,我想在此再次重申一遍,因為聲明提前是函數聲明和函數表達式的一個重要區別,對于我們進一步理解這兩種函數定義方法有著重要的意義。

但是再說函數聲明提前之前呢,有必要說一下var聲明提前。

先給出var聲明提前的結論:

變量在聲明它們的腳本或函數中都是有定義的,變量聲明語句會被提前到腳本或函數的頂部。但是,變量初始化的操作還是在原來var語句的位置執行,在聲明語句之前變量的值是undefined。

上面的結論中可以總結出三個簡單的點:

1.變量聲明會提前到函數的頂部;

2.只是聲明被提前,初始化不提前,初始化還在原來初始化的位置進行初始化;

3.在聲明之前變量的值是undefined。

還是來例子實在:

var handsome='handsome';

function handsomeToUgly(){

  alert(handsome);

  var handsome='ugly';

  alert(handsome);

}

handsomeToUgly();

正確的輸出結果是:

先輸出undefined,然后輸出ugly。

錯誤的輸出結果是:

先輸出handsome,然后輸出ugly。

這里正是變量聲明提前起到的作用。該handsome局部變量在整個函數體內都是有定義的,在函數體內的handsome變量壓住了,哦不對,是覆蓋住了同名的handsome全局變量,因為變量聲明提前,即var handsome被提前至函數的頂部,就是這個樣子:

var handsome='handsome';

function handsomeToUgly(){

  var handsome;

  alert(handsome);

  var handsome='ugly';

  alert(handsome);

}

handsomeToUgly();

所以說在alert(handsome)之前,已經有了var handsome聲明,由上面提到的

在聲明之前變量的值是undefined

所以第一個輸出undefined。

又因為上面提到的:

只是聲明被提前,初始化不提前,初始化還在原來初始化的位置進行初始化

所以第二個輸出ugly。

函數聲明提前

接下倆我們結合var聲明提前開始聊函數聲明的聲明提前。

函數聲明的聲明提前小伙伴們應該很熟悉,舉個再熟悉不過的例子。

sayTruth();<!-- 函數聲明 -->

function sayTruth(){

  alert('myvin is handsome.');

}

sayTruth();<!-- 函數表達式 -->

var sayTruth=function(){

  alert('myvin is handsome.');

}

小伙伴們都知道,對于函數聲明的函數定義方法,即上面的第一種函數調用方法是正確的,可以輸出myvin is handsome.的真理,因為函數調用語句可以放在函數聲明之后。而對于函數表達式的函數定義方法,即上面的第二種函數調用的方法是不能輸出myvin is handsome.的正確結果的。

結合上面的myvin is handsome.例子,函數聲明提前的結論似乎很好理解,不就是在使用函數聲明的函數定義方法的時候,函數調用可以放在任意位置嘛。對啊,你說的很對啊,小伙伴,我都不知道怎么反駁你了。那就容我再扯幾句。

從小伙伴所說的

不就是在使用函數聲明的函數定義方法的時候,函數調用可以放在任意位置嘛

可以引出一點:

函數聲明提前的時候,函數聲明和函數體均提前了。

而且:

函數聲明是在預執行期執行的,就是說函數聲明是在瀏覽器準備執行代碼的時候執行的。因為函數聲明在預執行期被執行,所以到了執行期,函數聲明就不再執行(人家都執行過了自然就不再執行了)。

上面是一點。

函數表達式為什么不能聲明提前

我們再說一點:為什么函數表達式不能像函數聲明那樣進行函數聲明提前呢?

辛虧我知道一點兒,否則真不知道我該怎么回答呢?

咳咳,按照我的理解給小伙伴們解釋一下下:

我們上面說了var的聲明提前,注意我上面提過的:

只是聲明被提前,初始化不提前,初始化還在原來初始化的位置進行初始化

Ok,我們把函數表達式擺在這看看:

var variable=function(arg1, arg2, ...){

          <!-- function body -->

}

函數表達式就是把函數定義的方式寫成表達式的方式(貌似是白說,但是這對于解釋和理解為毛函數表達式不能函數聲明提前具有良好的療效),就是把一個函數對象賦值給一個變量,所以我們把函數表達式寫成這個樣子:

var varible=5看到這,也許小伙伴們會明白了,一個是把一個值賦值給一個變量,一個是把函數對象賦值給一個變量,所以對于函數表達式,變量賦值是不會提前的,即function(arg1, arg2, ...){<!-- function body -->}是不會提前的,所以函數定義并沒有被執行,所以函數表達式不能像函數聲明那樣進行函數聲明提前。

函數聲明提前的實例分析

還是那句話,還是例子來的實在:

sayTruth();

if(1){

  function sayTruth(){alert('myvin is handsome')};

}

else{

  function sayTruth(){alert('myvin is ugly')};

}

在瀏覽器不拋出錯誤的情況下(請自行測試相應的瀏覽器是否有拋出錯誤的情況,為啥我不測試?我能說我懶么。。。),瀏覽器的輸出結果是輸出myvin is ugly(我不愿承認,但是事實就是這樣啊啊啊啊,難道道出了人丑就該多讀書??????)。

為什么呢?當然是聲明提前了。因為函數聲明提前,所以函數聲明會在代碼執行前進行解析,執行順序是這樣的,先解析function sayTruth(){alert('myvin is handsome')},在解析function sayTruth(){alert('myvin is ugly')},覆蓋了前面的函數聲明,當我們調用sayTruth()函數的時候,也就是到了代碼執行期間,聲明會被忽略,所以自然會輸出myvin is ugly(好殘酷的現實。。。)。忘了的可以看上面說過的:

函數聲明是在預執行期執行的,就是說函數聲明是在瀏覽器準備執行代碼的時候執行的。因為函數聲明在預執行期被執行,所以到了執行期,函數聲明就不再執行了(人家都執行過了自然就不再執行了)。

小了個結

關于函數聲明的函數提前(提升)就聊到這里先,希望我的理解和扯淡能夠對有需要的小伙伴有所幫助。

當然,實踐出真知。對事物的了解、認知和運用還是在于多看多用多總結,記得有句名言,是講聲明和實踐的:“動起來,為新的聲明喝彩。”。

以上這篇淺析函數聲明和函數表達式——函數聲明的聲明提前就是小編分享給大家的全部內容了,希望能給大家一個參考

更多信息請查看網絡編程
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
免费成人高清视频| 欧美成人一区二区| 久久成人在线| 国产伦精品一区二区| 亚洲免费视频观看| 国产一区二区视频在线观看 | 国产精品国产三级国产a| 亚洲一本大道在线| 国产亚洲精品v| 蜜桃精品久久久久久久免费影院| 亚洲精品偷拍| 国产视频一区欧美| 欧美国产先锋| 久久av一区二区| 亚洲激情偷拍| 国产麻豆精品theporn| 免费成人av在线| 亚洲一区二区三区四区在线观看 | 国产专区综合网| 欧美精品亚洲二区| 欧美一区在线直播| 亚洲理论在线| 国内精品国产成人| 国产精品久久亚洲7777| 久久综合久色欧美综合狠狠| 午夜精品久久久久久久男人的天堂| 影音先锋久久精品| 国产欧美视频一区二区三区| 欧美好吊妞视频| 久久精品女人的天堂av| 日韩一区二区精品| 激情欧美国产欧美| 国产农村妇女精品一区二区| 欧美精品久久久久久久久老牛影院| 久久电影一区| 香蕉久久精品日日躁夜夜躁| 一区二区三区波多野结衣在线观看| 一色屋精品视频在线看| 国产区欧美区日韩区| 欧美性大战久久久久久久| 欧美激情黄色片| 久久伊人精品天天| 久久精品国产99| 亚洲欧美综合| 午夜久久一区| 香蕉亚洲视频| 午夜在线观看欧美| 午夜在线不卡| 亚洲欧美日韩国产中文在线| 亚洲网站视频福利| 一区二区三区欧美| 亚洲视屏一区| 亚洲欧美日韩在线| 亚洲欧美视频在线| 新片速递亚洲合集欧美合集| 香蕉亚洲视频| 欧美一区二区在线视频| 午夜精彩视频在线观看不卡| 亚欧成人在线| 久久久99国产精品免费| 久久蜜桃精品| 欧美激情综合网| 欧美视频免费在线| 国产精品免费电影| 国产一区二区三区免费观看| 狠狠干成人综合网| 亚洲福利国产精品| 夜夜嗨av色综合久久久综合网| 一个色综合av| 午夜欧美不卡精品aaaaa| 久久国产高清| 欧美成人午夜激情在线| 欧美激情亚洲一区| 欧美色另类天堂2015| 国产精品视频久久久| 国外成人在线| 亚洲看片一区| 欧美一区二区三区在线免费观看| 久久九九热免费视频| 欧美14一18处毛片| 欧美日韩一区二区三区四区五区 | 亚洲欧美日韩另类| 欧美一区二区三区在线观看| 久久亚洲欧美| 欧美日韩一二三四五区| 国产色爱av资源综合区| 亚洲黄网站黄| 亚洲女爱视频在线| 久久久久一区二区| 欧美日韩一区二区三区视频| 国产午夜精品久久久| 亚洲欧洲在线视频| 校园春色国产精品| 欧美激情四色 | 欧美三级第一页| 国产亚洲一区二区在线观看| 亚洲欧洲日韩女同| 午夜日韩在线观看| 欧美激情亚洲视频| 国产一区二区三区日韩欧美| 99精品久久| 久久综合给合久久狠狠狠97色69| 欧美日韩国产一中文字不卡| 国产在线拍偷自揄拍精品| 99在线|亚洲一区二区| 久久九九精品| 国产精品一卡二| 亚洲视频高清| 欧美国产欧美综合 | 亚洲免费精彩视频| 久久久亚洲国产美女国产盗摄| 欧美日韩中文字幕在线视频| **网站欧美大片在线观看| 午夜亚洲性色视频| 欧美丝袜一区二区三区| 亚洲欧洲美洲综合色网| 久久尤物视频| 99精品黄色片免费大全| 久久香蕉精品| 国产日韩精品入口| 性欧美videos另类喷潮| 国产精品国产三级国产普通话蜜臀| 亚洲精品视频免费在线观看| 久久综合给合| 在线观看亚洲一区| 久久手机精品视频| 黄色精品在线看| 久久精品91| 国产欧美亚洲日本| 欧美一区二区在线播放| 国产伦精品一区二区三区视频黑人| 亚洲五月六月| 国产精品久久久久一区二区三区共 | 久久综合999| 红桃视频国产精品| 久久婷婷综合激情| 黄色小说综合网站| 久久人人爽爽爽人久久久| 激情综合电影网| 免费成人高清在线视频| 亚洲人永久免费| 欧美日韩精品在线| 亚洲亚洲精品三区日韩精品在线视频 | 欧美日韩综合另类| 亚洲天堂成人| 国产精品专区一| 久久久久久亚洲精品中文字幕| 黄色成人在线| 欧美激情国产高清| 亚洲私人影院| 国产一区白浆| 欧美大片免费观看| 一区二区三区高清| 国产日韩欧美亚洲| 蜜桃久久精品一区二区| 99精品视频网| 国产精品制服诱惑| 老司机aⅴ在线精品导航| 99精品99久久久久久宅男| 国产精品人人爽人人做我的可爱| 欧美在线播放一区| 亚洲激情在线激情| 国产精品美女午夜av| 久热精品视频在线观看一区| 日韩视频一区二区三区在线播放免费观看 | 欧美绝品在线观看成人午夜影视| aa亚洲婷婷| 国产欧美日韩精品专区| 美女图片一区二区| 亚洲天堂免费观看| 在线成人欧美| 国产精品久久久久久久久久久久久久 | 夜夜精品视频一区二区| 国产欧美一区二区白浆黑人| 欧美日韩精品中文字幕| 欧美在线不卡| 一区二区三区高清| 亚洲第一精品电影| 国产精品美女www爽爽爽| 免费在线观看日韩欧美| 亚洲欧美国产一区二区三区| 亚洲国产裸拍裸体视频在线观看乱了中文| 欧美精品一区二区三区蜜臀| 先锋影音国产精品| 99国产精品久久久久久久成人热| 国产一区二区精品久久99| 欧美三区在线观看| 欧美成人精品高清在线播放| 欧美在线亚洲综合一区| 亚洲一级电影| 日韩视频在线观看国产| 国产亚洲一区二区三区在线观看 | 红杏aⅴ成人免费视频| 欧美午夜电影在线观看| 欧美成人精品激情在线观看 | 亚洲一级在线观看| 日韩午夜在线电影| 亚洲激情第一区| **欧美日韩vr在线| 在线成人免费观看|