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

資訊專欄INFORMATION COLUMN

js的作用域、作用域鏈

masturbator / 690人閱讀

摘要:作用域所謂作用域,就是變量或者是函數(shù)能作用的范圍。常見的經(jīng)典例子解決辦法作用域鏈變量隨著作用長輩函數(shù)一級一級往上搜索,直到找到為止,找不到就報錯,這個過程就是作用域鏈起的作用。

作用域
所謂作用域,就是變量或者是函數(shù)能作用的范圍。

那么JavaScript里有什么作用域呢?

1、全局作用域
除了函數(shù)中定義的變量之外,都是全局作用域。

舉個栗子:

var a = 10;
function bar(){
    console.log(a);
}
bar();//10

以上的a就是全局變量,到處可以訪問a。
然鵝,

var a = 10;
function bar(){
    console.log(a);
    var a = 20;
}
bar();//undefined

什么鬼?undefined?
是的,你沒看錯。因為先搜索函數(shù)的變量看是否存在a,存在,又由于a被預(yù)解析(變量提升),提升的a綁定了這里的a作用域,所以結(jié)果就是undefined。

2、局部作用域
函數(shù)里用var聲明的變量。

舉個栗子:

var a = 10;
function bar(){
   var a  = 20;
    console.log(a);
}
bar();//20
3、沒有塊級作用域(至ES5),ES6中有塊級作用域
ES6之前,除了函數(shù)之外的塊都不具備塊級作用域。

常見的經(jīng)典例子:

for(var i=0;i<4;i++){
    setTimeout(function(){
        console.log(i);
    },200);
}
//4 4 4 4

解決辦法:

for(var i=0;i<4;i++){
    (function(j){
            setTimeout(function(){
        console.log(j);
    },200);
    })(i)
}
//0 1 2 3
作用域鏈
變量隨著作用長輩函數(shù)一級一級往上搜索,直到找到為止,找不到就報錯,這個過程就是作用域鏈起的作用。
var num = 30;
function f1(){
    var num  = 20;
    function f2(){
        var num = 10;
        function f3(){
            var num = 5;
            console.log(num);
        }
        f3();
    }
   f2();
}
f1();

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

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

相關(guān)文章

  • 形象化模擬作用鏈,深入理解js作用、閉包

    摘要:至此作用域鏈創(chuàng)建完畢。好了,通過深入理解作用域鏈,我們能跟好的理解的運行機制和閉包的原理。 前言 理解javascript中的作用域和作用域鏈對我們理解js這們語言。這次想深入的聊下關(guān)于js執(zhí)行的內(nèi)部機制,主要討論下,作用域,作用域鏈,閉包的概念。為了更好的理解這些東西,我模擬了當一個函數(shù)執(zhí)行時,js引擎做了哪些事情--那些我們看不見的動作。 關(guān)鍵詞: 執(zhí)行環(huán)境 作用域 作用域鏈 變...

    txgcwm 評論0 收藏0
  • 深入學習js之——作用

    摘要:開篇作用域是每種計算機語言最重要的基礎(chǔ)之一,因此要想深入的學習作用域和作用域鏈就是個繞不開的話題。這樣由多個執(zhí)行上下文的變量對象構(gòu)成的鏈表就叫做作用域鏈。這時候執(zhí)行上下文的作用域鏈,我們命名為至此,作用域鏈創(chuàng)建完畢。 開篇 作用域是每種計算機語言最重要的基礎(chǔ)之一,因此要想深入的學習JavaScript,作用域和作用域鏈就是個繞不開的話題。 在《深入學習js之—-執(zhí)行上下文?!分形覀兲岬?..

    lemanli 評論0 收藏0
  • [學習筆記] JavaScript 作用

    摘要:全局執(zhí)行環(huán)境的變量對象始終是作用域鏈中的最后一個變量對象。綜上,每個函數(shù)對應(yīng)一個執(zhí)行環(huán)境,每個執(zhí)行環(huán)境對應(yīng)一個變量對象,而多個變量對象構(gòu)成了作用域鏈,如果當前執(zhí)行環(huán)境是函數(shù),那么其活動對象在作用域鏈的前端。 1.幾個概念 先說幾個概念:函數(shù)、執(zhí)行環(huán)境、變量對象、作用域鏈、活動對象。這幾個東東之間有什么關(guān)系呢,往下看~ 函數(shù) 函數(shù)大家都知道,我想說的是,js中,在函數(shù)內(nèi)部有兩個特殊...

    ?xiaoxiao, 評論0 收藏0
  • JS 執(zhí)行上下文棧 / 作用

    摘要:每一個執(zhí)行上下文可以訪問的對象包括自身的作用域和父執(zhí)行上下文的作用域和父父執(zhí)行上下文作用域直到全局作用域,這就產(chǎn)生了作用域鏈。語句結(jié)束后,作用域鏈恢復(fù)正常。 0、自己理解 代碼執(zhí)行或函數(shù)調(diào)用生成執(zhí)行上下文(只有當前執(zhí)行上下文有執(zhí)行權(quán)),該執(zhí)行上下文內(nèi)只能訪問當前執(zhí)行上下文的變量、函數(shù)和上一級執(zhí)行上下文中的變量、函數(shù),激活下一個執(zhí)行上下文的時候執(zhí)行權(quán)轉(zhuǎn)移到新的執(zhí)行上下文,形成執(zhí)行上下文棧...

    yunhao 評論0 收藏0
  • 還是不明白JavaScript - 執(zhí)行環(huán)境、作用、作用鏈、閉包嗎?

    摘要:所以,全局執(zhí)行環(huán)境的變量對象始終都是作用域鏈中的最后一個對象。講到這里,可能你已經(jīng)對執(zhí)行環(huán)境執(zhí)行環(huán)境對象變量對象作用域作用域鏈的理解已經(jīng)他們之間的關(guān)系有了一個較清晰的認識。 JavaScript中的執(zhí)行環(huán)境、作用域、作用域鏈、閉包一直是一個非常有意思的話題,很多博主和大神都分享過相關(guān)的文章。這些知識點不僅比較抽象,不易理解,更重要的是與這些知識點相關(guān)的問題在面試中高頻出現(xiàn)。之前我也看過...

    jlanglang 評論0 收藏0
  • JavaScript 作用學習筆記

    摘要:每一個運行期上下文都和一個作用域鏈關(guān)聯(lián)。這個對象將被推入作用域鏈的頭部,這意味著函數(shù)的所有局部變量現(xiàn)在處于第二個作用域鏈對象中,因此訪問代價更高了。在代碼塊內(nèi)部,函數(shù)的所有局部變量將會被放在第二個作用域鏈對象中。 參考: Javascript作用域原理 理解 JavaScript 作用域和作用域鏈 JavaScript 作用域 作用域就是變量與函數(shù)的可訪問范圍,即作用域控制著變量與函數(shù)...

    趙連江 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<