国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Javascript - 執(zhí)行上下文

xioqua / 3285人閱讀

摘要:當(dāng)代碼運(yùn)行前,在全局執(zhí)行上下文中瀏覽器中就會默認(rèn)添加一些變量,如,所以在調(diào)用代碼時(shí)三函數(shù)中的激活對象與變量對象一樣,即只不過多了一個(gè)變量,為這個(gè)可選擇性忽略,沒什么用函數(shù)調(diào)用中的執(zhí)行上下文代碼如下

概念 一、執(zhí)行上下文: (Execution Context,縮寫 EC)
    console.log("EC0");
    function funcEC1(){
        console.log("EC1");
        function funcEC2(){
            console.log("EC2");
            var funcEC3 = function(){
                console.log("EC3");
            };
        }
        funcEC2();
    }
    funcEC1();

在Javascript引擎解析上述代碼時(shí)在執(zhí)行函數(shù)會依次將其添加到棧(Stack)中,即(ECO(Global),EC1,EC2),如下圖所示:

執(zhí)行上下文分為:全局執(zhí)行上下文和函數(shù)執(zhí)行上下文

二、變量對象:(Variable Object VO)

是一個(gè)抽象的概念中的‘對象’,它用于存儲執(zhí)行上下文中的:

變量

函數(shù)聲明

函數(shù)參數(shù)

var a = 10;
    function test(x){
        var b = 20;
    }
    test(30);

Javascript引擎會將其解析為:

 VO(globalContext) = {
        a: 10,
        test: 
    };
    VO(test functionContext){
        x:30,
        b:20
    };

在瀏覽器中全局上下文變量對象為window,而在nodejs中全局上下文變量對象為global。
當(dāng)js代碼運(yùn)行前,在全局執(zhí)行上下文中(瀏覽器)中就會默認(rèn)添加一些變量,
如:Math,String,isNaN,window,所以在調(diào)用代碼時(shí):

String(10);             //[[global]].String(10)
window.a = 10;         //[[global]].window.a = 10
this.b = 20;             //[[global]].b = 20
三、函數(shù)中的激活對象:(Active Object AO)

與變量對象一樣,即(VO(functionContext) === AO);
只不過AO多了一個(gè)變量,為arguments:

 arguments = {
        callee,
        length,
        properties-indexes
    };

這個(gè)可選擇性忽略,沒什么用.

函數(shù)調(diào)用中的執(zhí)行上下文

代碼如下:

    function test(a, b){
        var c = 10;
        function d(){}
        var e = function _e(){};
        (function(){})();
        b = 20;
    }
    test(10);

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

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/79685.html

相關(guān)文章

  • 前端進(jìn)階系列(七):什么是執(zhí)行下文?什么是調(diào)用棧?

    摘要:什么是中的調(diào)用棧調(diào)用棧就像是程序當(dāng)前執(zhí)行的日志。當(dāng)函數(shù)執(zhí)行結(jié)束時(shí),將從調(diào)用棧中出去。了解全局和局部執(zhí)行上下文是掌握作用域和閉包的關(guān)鍵。總結(jié)引擎創(chuàng)建執(zhí)行上下文,全局存儲器和調(diào)用棧。 原文作者:Valentino 原文鏈接:https://www.valentinog.com/blog/js-execution-context-call-stack 什么是Javascript中的執(zhí)行上下文...

    leone 評論0 收藏0
  • JavaScript深入之執(zhí)行下文

    摘要:深入系列第七篇,結(jié)合之前所講的四篇文章,以權(quán)威指南的為例,具體講解當(dāng)函數(shù)執(zhí)行的時(shí)候,執(zhí)行上下文棧變量對象作用域鏈?zhǔn)侨绾巫兓摹G把栽谏钊胫畧?zhí)行上下文棧中講到,當(dāng)代碼執(zhí)行一段可執(zhí)行代碼時(shí),會創(chuàng)建對應(yīng)的執(zhí)行上下文。 JavaScript深入系列第七篇,結(jié)合之前所講的四篇文章,以權(quán)威指南的demo為例,具體講解當(dāng)函數(shù)執(zhí)行的時(shí)候,執(zhí)行上下文棧、變量對象、作用域鏈?zhǔn)侨绾巫兓摹?前言 在《Jav...

    gougoujiang 評論0 收藏0
  • JavaScript深入之執(zhí)行下文

    摘要:深入系列第三篇,講解執(zhí)行上下文棧的是如何執(zhí)行的,也回答了第二篇中的略難的思考題。 JavaScript深入系列第三篇,講解執(zhí)行上下文棧的是如何執(zhí)行的,也回答了第二篇中的略難的思考題。 順序執(zhí)行? 如果要問到 JavaScript 代碼執(zhí)行順序的話,想必寫過 JavaScript 的開發(fā)者都會有個(gè)直觀的印象,那就是順序執(zhí)行,畢竟: var foo = function () { ...

    codecraft 評論0 收藏0
  • 「JS篇」JavaScript 執(zhí)行下文和提升

    摘要:執(zhí)行上下文當(dāng)代碼運(yùn)行的時(shí)候,運(yùn)行代碼的環(huán)境形成了執(zhí)行上下文,執(zhí)行上下文決定代碼可以訪問哪些變量函數(shù)對象等。我們將執(zhí)行上下文簡單視為運(yùn)行當(dāng)前代碼的,我們知道作用域分為和。完成后,其執(zhí)行堆棧將從堆棧中刪除,將控制權(quán)交給全局執(zhí)行上下文。 我們通常將 JavaScript 歸類為動態(tài)或解釋執(zhí)行語言,但實(shí)際上它也是一門編譯語言,它有自己的編譯器形式,運(yùn)行在 JavaScript 引擎中。 每個(gè) ...

    googollee 評論0 收藏0
  • JavaScript深入之閉包

    摘要:深入系列第八篇,介紹理論上的閉包和實(shí)踐上的閉包,以及從作用域鏈的角度解析經(jīng)典的閉包題。定義對閉包的定義為閉包是指那些能夠訪問自由變量的函數(shù)。 JavaScript深入系列第八篇,介紹理論上的閉包和實(shí)踐上的閉包,以及從作用域鏈的角度解析經(jīng)典的閉包題。 定義 MDN 對閉包的定義為: 閉包是指那些能夠訪問自由變量的函數(shù)。 那什么是自由變量呢? 自由變量是指在函數(shù)中使用的,但既不是函數(shù)參數(shù)也...

    caige 評論0 收藏0
  • 深入理解JavaScript執(zhí)行下文執(zhí)行

    摘要:執(zhí)行上下文和執(zhí)行棧是中關(guān)鍵概念之一,是難點(diǎn)之一。理解執(zhí)行上下文和執(zhí)行棧同樣有助于理解其他的概念如提升機(jī)制作用域和閉包等。函數(shù)執(zhí)行完成,函數(shù)的執(zhí)行上下文出棧,并且被銷毀。 前言 如果你是一名 JavaScript 開發(fā)者,或者想要成為一名 JavaScript 開發(fā)者,那么你必須知道 JavaScript 程序內(nèi)部的執(zhí)行機(jī)制。執(zhí)行上下文和執(zhí)行棧是JavaScript中關(guān)鍵概念之一,是Ja...

    silenceboy 評論0 收藏0

發(fā)表評論

0條評論

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