成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

js 變量、函數(shù)聲明提前問(wèn)題

Benedict Evans / 1206人閱讀

摘要:變量聲明提前看代碼以上代碼報(bào)錯(cuò),這很好理解根本就沒聲明當(dāng)然報(bào)錯(cuò)啦,往下看以上代碼對(duì)于解釋器來(lái)說(shuō)是下面這樣的,所以沒有報(bào)錯(cuò),且輸出了再來(lái)看一中情況原因如下對(duì)于解釋器來(lái)代碼是這樣的向上首先找到局部變量函數(shù)提前以上代碼中函數(shù)不只是聲明提前了而是整

1、變量聲明提前:
看代碼

(function(){

    function add(){
        alert(a);
    }
})()
/* 以上代碼報(bào)錯(cuò):ReferenceError: a is not defined,
 * 這很好理解 根本就沒聲明當(dāng)然報(bào)錯(cuò)啦,往下看:
 */

(function(){

    function add(){
        alert(a); // output:undefined;
        var a = "bcd";
        alert(a); // output:bcd;
    }
    
})()
//以上代碼對(duì)于解釋器來(lái)說(shuō)是下面這樣的,所以沒有報(bào)錯(cuò),且輸出了undefined;


(function(){
    
    function add(){
        var a; // eq: var a = undefined;
        alert(a); // output:undefined;
        a = "bcd";
        alert(a); // output:bcd;
    }
    
})()

//再來(lái)看一中情況:
(function(){

    var a = "wer";
    function add(){
        alert(a); // output:undefined;
        var a = "bcd";
        alert(a); // output:bcd;
    }
    
})()
/*
 *原因如下:對(duì)于解釋器來(lái)代碼是這樣的
 */
(function(){

    var a = "wer";
    function add(){
        var a; // eq:var a = undefined;
        alert(a); // 向上首先找到局部變量a,
        a = "bcd";
        alert(a);
    }
    
})()

2、函數(shù)提前:

(function(){
    
    alert(add(1, 3)); // output:4, 

    function add(x, y){
        return x + y;
    }
    
})
// 以上代碼中函數(shù)add 不只是聲明提前了而是整個(gè)add函數(shù)的定義都被提前了

//另一種情況:
(function(){

    alert(add(1, 3)); //TypeError: add is not a function

    var add = function(x, y){
        return x + y;
    }
    
})()

//對(duì)于編譯器來(lái)說(shuō)代碼如下:
(function(){
    
    var add;

    alert(add(1, 3)); //所以TypeError
    
    add = function(x, y){
        return x + y;
    }
    
})()
**總結(jié):**
1、變量的聲明被提前到作用域頂部,賦值保留在原地
2、函數(shù)聲明整個(gè)“被提前”
3、函數(shù)作為值賦給變量時(shí)只有變量“被提前”了,函數(shù)沒有“被提前”

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/79817.html

相關(guān)文章

  • JS難點(diǎn)之hoist

    摘要:但是變量只有其聲明被提前在作用域的最開始處,賦值結(jié)果仍然還在原來(lái)位置。 這篇博文是之前在CSDN寫的,現(xiàn)在移至sf。 有過(guò)C或者Java類編程經(jīng)驗(yàn)的同學(xué),對(duì)于先聲明后使用的規(guī)則很熟悉,如果使用未聲明的變量或者函數(shù),編譯時(shí)程序會(huì)報(bào)錯(cuò)!但是,JavaScript卻是一個(gè)‘大奇葩’,可以在變量或者函數(shù)聲明之前使用,現(xiàn)在根據(jù)我的理解在做一下說(shuō)明。 首先說(shuō)明JS的hoist分為變量hoist和函...

    biaoxiaoduan 評(píng)論0 收藏0
  • Javascript 函數(shù)、作用域鏈與閉包

    摘要:而外層的函數(shù)不能訪問(wèn)內(nèi)層的變量或函數(shù),這樣的層層嵌套就形成了作用域鏈。閉包閉包是指有權(quán)訪問(wèn)另一個(gè)函數(shù)作用域中的變量的函數(shù),創(chuàng)建閉包的最常見的方式就是在一個(gè)函數(shù)內(nèi)創(chuàng)建另一個(gè)函數(shù),通過(guò)另一個(gè)函數(shù)訪問(wèn)這個(gè)函數(shù)的局部變量。 閉包是js中一個(gè)極為NB的武器,但也不折不扣的成了初學(xué)者的難點(diǎn)。因?yàn)閷W(xué)好閉包就要學(xué)好作用域,正確理解作用域鏈,然而想做到這一點(diǎn)就要深入的理解函數(shù),所以我們從函數(shù)說(shuō)起。 函數(shù)...

    ssshooter 評(píng)論0 收藏0
  • js幾個(gè)經(jīng)典的題目詳解

    摘要:四這個(gè)題目比較簡(jiǎn)單即函數(shù)聲明和變量聲明的關(guān)系和影響,遇到同名的函數(shù)聲明,不會(huì)重新定義五關(guān)于這個(gè)題目,的規(guī)范有解釋的。屬性的值是對(duì)象關(guān)于對(duì)象的具體定義,看這里對(duì)象六這個(gè)題目可以說(shuō)是最簡(jiǎn)單的,也是最詭異的關(guān)于這個(gè)題目,我們先來(lái)了解個(gè)概念。 廢話不多說(shuō),直接看題目,先不要急著看答案 先自己思考,收獲更多 (長(zhǎng)期補(bǔ)倉(cāng)); 一 var out = 25, inner = { ...

    stormgens 評(píng)論0 收藏0
  • JS基礎(chǔ)-作用域、作用域鏈與閉包 Part three

    摘要:作用域執(zhí)行上下文變量提前函數(shù)聲明提前確定值范圍一段或者一個(gè)函數(shù)都會(huì)生成一個(gè)執(zhí)行上下文全局一段變量定義函數(shù)聲明函數(shù)變量定義函數(shù)聲明參數(shù)集合變量提前代碼解析執(zhí)行過(guò)程變量定義提前賦值函數(shù)聲明提前代碼解析函數(shù)聲明函數(shù)表達(dá)式執(zhí)行過(guò)程執(zhí)行過(guò)程執(zhí)行時(shí)才能 1.作用域 執(zhí)行上下文 (變量提前、函數(shù)聲明提前、確定this值、arguments) 范圍:一段或者一個(gè)函數(shù)(都會(huì)生成一個(gè)執(zhí)行上下文) ...

    heartFollower 評(píng)論0 收藏0
  • js知識(shí)梳理5:關(guān)于函數(shù)的要點(diǎn)梳理(1)

    摘要:構(gòu)造函數(shù)調(diào)用會(huì)使用新創(chuàng)建的對(duì)象作為調(diào)用上下文。函數(shù)的參數(shù)相關(guān)可選形參當(dāng)傳入的實(shí)參比函數(shù)聲明時(shí)指定的形參數(shù)量要少,剩下的形參都將設(shè)置為值實(shí)參多則會(huì)自動(dòng)省略。它們的第一個(gè)實(shí)參是要調(diào)用函數(shù)的母對(duì)象,它是調(diào)用上下文,函數(shù)體內(nèi)通過(guò)引用它。 寫在前面 注:這個(gè)系列是本人對(duì)js知識(shí)的一些梳理,其中不少內(nèi)容來(lái)自書籍:Javascript高級(jí)程序設(shè)計(jì)第三版和JavaScript權(quán)威指南第六版,感謝它們的...

    付倫 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<