Javascript的作用域域作用域鏈的理解

2021-08-21 14:34:02 字數 489 閱讀 4728

如何解析一段可執行**?

分了兩個階段:解析**和執行**。其中解析**可以理解為記名字,就是先把關鍵字var和function定義的變數名登記了下來,這也就有了變數提公升這一說。在執行**階段才是真正的執行賦值,運算等操作。

暫不解析這幾個名詞,先來看乙個例子。

var scope = 'global';

function fn()

fn();

alert(scope);

(1)先建立全域性物件go(global object),全域性執行環境ecg(execute context global)入棧。

go中會存放全域性變數,ecg是乙個**執行環境,每個塊**被執行時中都進入乙個環境,在這個環境裡就是維護了這段**的變數。而ecg則是全域性的。

(2)解析**(找變數名)

(3)執行**(賦值,執行函式)

(4)fn()解析,就有該函式的執行環境,入棧。函式的活動物件。 

JavaScript 作用域,作用域鏈詳解

前言 es5缺少區域性作用域的概念,而es6已經補充了es6的概念。一 作用域 把作用域比作乙個個封閉的方塊,在相同乙個封閉方塊中的物體可以相互接觸,但是無法和別的封閉方塊中的物體直接接觸。二 全域性作用域 這個就是簡單的全域性作用域。全域性作用域相當於乙個最大的封閉空間,他裡面還有乙個個小的封閉空...

Javascript變數作用域

1.變數作用域是什麼鬼?2.全域性變數 全域性變數擁有全域性作用域 作用範圍在整個頁面中 在 的任何地方都有定義。擁有全域性作用域的情形 1 宣告在函式外部的變數。eg var a 全域性變數 function b 2 宣告變數時,缺少關鍵字var。eg function b 函式引數的變數 fun...

javascript作用域鏈

首先我們來看一段 然後通過分析這段 來說明作用域鏈的這個問題,如下 console.log total var total 0 function fn num1,num2 fn 100,200 console.log total 複製 這段 輸出的結果為 undefined undefined 30...