• <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 中定義函數用 var foo = function () {} 和 function foo()區別介紹

    來源:懂視網 責編:小采 時間:2020-11-27 22:18:29
    文檔

    JavaScript 中定義函數用 var foo = function () {} 和 function foo()區別介紹

    JavaScript 中定義函數用 var foo = function () {} 和 function foo()區別介紹:某天寫代碼突然縣道這個問題,順勢總結一波 JavaScript 函數和變量聲明的提前(hoist)行為 簡單的說 如果我們使用 匿名函數 var a = {} 這種方式, 編譯后變量聲明a 會被提前了,但是他的賦值(也就是a)并不會被提前。 也就是,匿名函數只有在被調
    推薦度:
    導讀JavaScript 中定義函數用 var foo = function () {} 和 function foo()區別介紹:某天寫代碼突然縣道這個問題,順勢總結一波 JavaScript 函數和變量聲明的提前(hoist)行為 簡單的說 如果我們使用 匿名函數 var a = {} 這種方式, 編譯后變量聲明a 會被提前了,但是他的賦值(也就是a)并不會被提前。 也就是,匿名函數只有在被調

    某天寫代碼突然縣道這個問題,順勢總結一波

    JavaScript 函數和變量聲明的“提前”(hoist)行為

    簡單的說 如果我們使用 匿名函數

    var a = {}

    這種方式, 編譯后變量聲明a 會“被提前”了,但是他的賦值(也就是a)并不會被提前。

    也就是,匿名函數只有在被調用時才被初始化。

    如果使用

    function a () {};

    這種方式, 編譯后函數聲明和他的賦值都會被提前。

    也就是說函數聲明過程在整個程序執行之前的預處理就完成了,所以只要處于同一個作用域,就可以訪問到,即使在定義之前調用它也可以。

    看一個例子

    function hereOrThere() { //function statement
     return 'here';
    }
    console.log(hereOrThere()); // alerts 'there'
    function hereOrThere() {
     return 'there';
    }

    我們會發現alert(hereOrThere) 語句執行時會alert('there')!這里的行為其實非常出乎意料,主要原因是JavaScript 函數聲明的“提前”行為,簡而言之,就是Javascript允許我們在變量和函數被聲明之前使用它們,而第二個定義覆蓋了第一種定義。換句話說,上述代碼編譯之后相當于

    function hereOrThere() { //function statement
     return 'here';
    }
    function hereOrThere() {//申明前置了,但因為這里的申明和賦值在一起,所以一起前置
     return 'there';
    }
    console.log(hereOrThere()); // alerts 'there'

    我們期待的行為

    var hereOrThere = function () { // function expression
     return 'here';
    };
    console.log(hereOrThere()); // alerts 'here'
    hereOrThere = function () {
     return 'there';
    };

    這段程序編譯之后相當于:

    var hereOrThere;//申明前置了
    hereOrThere = function() { // function expression
     return 'here';
    };
    console.log(hereOrThere()); // alerts 'here'
    hereOrThere = function() {
     return 'there';
    };

    總結

    以上所述是小編給大家介紹的JavaScript 中定義函數用 var foo = function () {} 和 function foo()區別介紹,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

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

    文檔

    JavaScript 中定義函數用 var foo = function () {} 和 function foo()區別介紹

    JavaScript 中定義函數用 var foo = function () {} 和 function foo()區別介紹:某天寫代碼突然縣道這個問題,順勢總結一波 JavaScript 函數和變量聲明的提前(hoist)行為 簡單的說 如果我們使用 匿名函數 var a = {} 這種方式, 編譯后變量聲明a 會被提前了,但是他的賦值(也就是a)并不會被提前。 也就是,匿名函數只有在被調
    推薦度:
    標簽: 定義 js fun
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 精品无码一区二区三区爱欲| 国产最新进精品视频| 亚洲精品美女久久久久99| 欧洲精品码一区二区三区免费看| 国产精品黄网站| 色欲久久久天天天综合网精品| 国产精品成人免费观看| 国产国拍亚洲精品mv在线观看| 三级国产精品| 精品精品国产欧美在线小说区 | 一级成人精品h| 精品久久久久久久久午夜福利| 亚洲精品国产综合久久一线| 久久国产乱子伦精品免费午夜| 亚洲国产精品欧美日韩一区二区| 久久99国产乱子伦精品免费| 亚洲国产成人a精品不卡在线| 国产91精品黄网在线观看| 国产美女久久精品香蕉69| 无码国内精品人妻少妇蜜桃视频| 精品国产乱码久久久久久浪潮| 久久久久夜夜夜精品国产| 国产精品视频第一区二区三区| 亚洲欧洲美洲无码精品VA| 久久露脸国产精品| 国产精品亚洲αv天堂无码| 久久精品国产99国产精偷| 无码精品人妻一区二区三区人妻斩| 四虎国产精品永久地址49| 久久久精品人妻一区二区三区四| 久久精品免费网站网| 国产精品龙口护士门在线观看 | 亚洲精品字幕在线观看| 日本五区在线不卡精品| 国产小呦泬泬99精品| 99精品欧美一区二区三区| 热99re久久国超精品首页| 九九热在线精品视频| 午夜精品一区二区三区免费视频 | 精品91自产拍在线观看二区| 成人亚洲日韩精品免费视频|