最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談javascript中執(zhí)行環(huán)境(作用域)與作用域鏈

 更新時間:2016年12月08日 15:01:59   作者:918之初  
本文主要介紹了javascript中執(zhí)行環(huán)境(作用域)與作用域鏈,并在文章結(jié)尾處做出了總結(jié),感興趣的朋友可以看下

相信很多初學(xué)者對與javascript中的執(zhí)行環(huán)境與作用域鏈不能很好的理解,這里,我會按照自己的理解同大家一起分享。

一般情況下,我們把執(zhí)行環(huán)境分為全局執(zhí)行環(huán)境和局部執(zhí)行環(huán)境,其中局部執(zhí)行環(huán)境我們又可以稱之為函數(shù)執(zhí)行環(huán)境。那么究竟什么使執(zhí)行環(huán)境呢?通俗的說,執(zhí)行環(huán)境即為代碼執(zhí)行時所處的環(huán)境。我們下來看一看如下代碼,再進一步分析之。

<script><br>var name="zhuzhenwei";
function changeName(){
    if (name=="zhuzhenwei"){
          name="heting";
    }else{
          name="zhuzhenwei";
    }
}
changeName();
console.log(name); //heting<br></script>

如上述代碼,當執(zhí)行第一個語句時,該語句所在的環(huán)境為全局執(zhí)行環(huán)境,應(yīng)當注意的是:每個執(zhí)行環(huán)境都有一個與之相關(guān)聯(lián)的變量對象,對于全局執(zhí)行環(huán)境,與它向關(guān)聯(lián)的對象為window對象。緊接著,下面這條語句聲明了一個函數(shù)(注意:這里僅僅是聲明了函數(shù),沒有被調(diào)用之前是不會執(zhí)行內(nèi)部代碼的)。  同樣這個函數(shù)也是處于全局執(zhí)行環(huán)境的。最后,我們調(diào)用了changeName()函數(shù),一旦調(diào)用了該函數(shù),那么立即跳轉(zhuǎn)到了changeName()函數(shù)的執(zhí)行環(huán)境(即函數(shù)執(zhí)行環(huán)境),一旦進入執(zhí)行環(huán)境,便開始創(chuàng)建函數(shù)內(nèi)部相應(yīng)的變量(如函數(shù)中假設(shè)出現(xiàn)var a=12;這樣的代碼),不調(diào)用函數(shù)是不會創(chuàng)建的,且與之相關(guān)的變量對象我們認為是活動對象(活動對象開始只包含一個變量,即arguments對象),自此開始從上到下執(zhí)行語句。與此同時,代碼在函數(shù)環(huán)境中執(zhí)行時,就會創(chuàng)建變量對象的一個作用域鏈,這個作用域鏈包含changeName()的變量對象和全局變量對象。

作用域鏈實際上就是我們可以通過它從前端到末端可以訪問的范圍,即保證對執(zhí)行環(huán)境有權(quán)訪問的所有變量和函數(shù)的有序訪問,其中前端是指當前執(zhí)行代碼所在的變量對象,這里現(xiàn)在就是changeName()函數(shù)的變量對象,末端是全局變量對象,比如說:我們在執(zhí)行函數(shù)時,需要尋找一個標識符,這是就是通過作用域鏈的末端進行尋找,若作用域鏈的末端找不到,就一直向上尋找,直到window對象。雖然在全局環(huán)境中我沒有提到作用域鏈,但實際上全局環(huán)境中作用域鏈也是存在的,只是只有一個全局變量對象。 很明顯:訪問局部變量比訪問全局變量更快,因為不用向上搜索作用域鏈。顯然,作用域鏈是隨著代碼所處的執(zhí)行環(huán)境的不同而動態(tài)變化的。           

當執(zhí)行完changeName()函數(shù)之后,即函數(shù)執(zhí)行環(huán)境中的代碼執(zhí)行完成之后,該環(huán)境中的局部變量和局部對象會被立即銷毀(如果變量沒有用var聲明,表明是全局變量,不會在局部環(huán)境的代碼執(zhí)行之后銷毀),隨即執(zhí)行環(huán)境由函數(shù)執(zhí)行環(huán)境轉(zhuǎn)向全局執(zhí)行環(huán)境,繼續(xù)執(zhí)行console.log(name);語句。只是,如果我們關(guān)閉網(wǎng)頁或瀏覽器,全局環(huán)境也將被銷毀。

總結(jié)如下:

  • 執(zhí)行環(huán)境也成為作用域,執(zhí)行環(huán)境決定了變量的生命周期。
  • 執(zhí)行環(huán)境有全局執(zhí)行環(huán)境和局部執(zhí)行環(huán)境之分,每進入一個執(zhí)行環(huán)境就會創(chuàng)建一個用于搜索變量和函數(shù)的作用域鏈,于是我們認為這個作用域鏈是動態(tài)變化的。
  • 函數(shù)的局部環(huán)境不僅有權(quán)訪問函數(shù)作用域中的變量,而且有權(quán)訪問其包含環(huán)境(父環(huán)境),乃至全局環(huán)境;而全局環(huán)境只能訪問在全局環(huán)境中定義的變量和函數(shù)(局部環(huán)境中未使用var聲明的變量也屬于全局變量),不能訪問局部環(huán)境中的數(shù)據(jù)(沒有說所有數(shù)據(jù),正是因為全局變量可以訪問)。注意:函數(shù)中的參數(shù)時函數(shù)的局部變量。

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,同時也希望多多支持腳本之家!

相關(guān)文章

  • ES6正則的擴展實例詳解

    ES6正則的擴展實例詳解

    這篇文章主要介紹了ES6正則的擴展,結(jié)合實例形式詳細分析了ES6正則操作常用的修飾符、模式、屬性、方法及相關(guān)操作技巧,需要的朋友可以參考下
    2017-04-04
  • JavaScript實現(xiàn)星級評價效果

    JavaScript實現(xiàn)星級評價效果

    這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)星級評價效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • JavaScript基礎(chǔ)進階之數(shù)組方法總結(jié)(推薦)

    JavaScript基礎(chǔ)進階之數(shù)組方法總結(jié)(推薦)

    下面小編就為大家?guī)硪黄狫avaScript基礎(chǔ)進階之數(shù)組方法總結(jié)(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • JavaScript禁止復(fù)制與粘貼的實現(xiàn)代碼

    JavaScript禁止復(fù)制與粘貼的實現(xiàn)代碼

    下面小編就為大家?guī)硪黄狫avaScript禁止復(fù)制與粘貼的實現(xiàn)代碼。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考,一起跟隨小編過來看看吧
    2016-05-05
  • Javascript 構(gòu)造函數(shù) 實例分析

    Javascript 構(gòu)造函數(shù) 實例分析

    一般構(gòu)造函數(shù)沒有返回值,他們通過關(guān)鍵字this初始化對象,沒有返回值。當然一個構(gòu)造器允許返回一個對 象,如果這樣的話 返回的對象將變成new 表達式的值,在這種情況下值為this的對象將拋棄
    2008-11-11
  • JavaScript逆向調(diào)試技巧總結(jié)分享

    JavaScript逆向調(diào)試技巧總結(jié)分享

    當我們抓取網(wǎng)頁端數(shù)據(jù)時,經(jīng)常被加密參數(shù)、加密數(shù)據(jù)所困擾,如何快速定位這些加解密函數(shù),尤為重要,下面這篇文章主要給大家介紹了關(guān)于JavaScript逆向調(diào)試技巧的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • Mint-UI時間組件起始時間問題及時間插件使用

    Mint-UI時間組件起始時間問題及時間插件使用

    這篇文章主要介紹了Mint-UI時間組件起始時間問題的解決方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-08-08
  • 淺談JS數(shù)組內(nèi)置遍歷方法有哪些和區(qū)別

    淺談JS數(shù)組內(nèi)置遍歷方法有哪些和區(qū)別

    本文主要介紹了淺談JS數(shù)組內(nèi)置遍歷方法有哪些和區(qū)別,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 基于JS實現(xiàn)導(dǎo)航條flash導(dǎo)航條

    基于JS實現(xiàn)導(dǎo)航條flash導(dǎo)航條

    flash導(dǎo)航條在網(wǎng)站建設(shè)中應(yīng)用比較廣泛,此種效果給瀏覽者帶來極好的視覺效果,非常棒,下面小編給大家介紹基于JS實現(xiàn)導(dǎo)航條flash導(dǎo)航條,非常不錯,具有參考借鑒價值,感興趣的朋友一起學(xué)習(xí)吧
    2016-06-06
  • JS獲取一個未知DIV高度的方法

    JS獲取一個未知DIV高度的方法

    這篇文章主要介紹了JS獲取一個未知DIV高度的方法,涉及javascript針對頁面元素屬性的動態(tài)操作相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2016-08-08

最新評論

姚安县| 岳池县| 楚雄市| 文山县| 阿巴嘎旗| 宁国市| 夏津县| 威信县| 闽侯县| 合山市| 合肥市| 丰顺县| 磐石市| 韶山市| 曲沃县| 上栗县| 双柏县| 红桥区| 吴川市| 云阳县| 行唐县| 镇江市| 潮州市| 垫江县| 洞口县| 玉环县| 屏南县| 从江县| 正安县| 永胜县| 博罗县| 长子县| 乌兰浩特市| 邯郸县| 张掖市| 凯里市| 独山县| 仙桃市| 遂昌县| 日土县| 许昌市|