4 2 Javascript之執行環境和作用域

2021-08-17 02:10:21 字數 1557 閱讀 9225

執行環境

每個執行環境都有乙個與之關聯的變數物件,環境中定義的所有變數和函式都儲存在這個物件中。

//書中說我們自己編寫的**無法訪問這個物件

//下面這個最外層的執行環境window物件是可以訪問的呢???

web瀏覽器中,最外層的執行環境是window物件,因此所有的全域性變數和函式都是作為window的屬性或者方法建立的

作用域鏈
作用域鏈的用途是保證執行環境對有許可權訪問的變數和函式的有序訪問

作用域鏈的前端都是當前執行**所在環境的變數物件

如果這個環境是函式,則將其活動物件作為變數物件,活動物件在一開始的時候只包含了arguments物件,作用域鏈中的下乙個變數物件來自於包含(外部)環境,再下乙個變數物件則來自於下乙個包含(外部)物件。。。一直延伸到全域性執行環境(全域性執行環境的變數物件始終是作用域鏈中的最後乙個物件)

var globalcolor = "globalcolor";

function

globalfunc

() console.log(globalcolor)

innerfunc();

}globalfunc();

console.log(globalcolor)

//globalfunccolor

//globalcolor-innerfunccolor

//globalcolor

//優先訪問當前執行**環境的變數物件

延長作用域鏈

執行環境的型別:全域性和區域性(函式)

function

buildurl

() return res;

}buildurl();

//width裡的href代表的是location.href,所以結果裡並沒有"test.com"

trycatch(ex);

// 對於捕獲來說會建立乙個新的變數物件,包含的是被丟擲來的錯誤物件的宣告

// 意思應該是新建立的執行環境下可以訪問到丟擲的錯誤物件

無塊級作用域
for(var i = 0; i < 10; i++)

console.log("now i is: " + i);

//now i is

10//變數i定義在for迴圈裡面,迴圈結束後,還是可以訪問到變數i,並沒有銷毀

變數查詢
var color = "red";

function

getcolor

()console.log(getcolor())

//呼叫getcolor函式時,返回color變數的值,首先會在getcolor函式的作用域內查詢color變數

//沒有找到變數,就會沿著作用域鏈繼續向上層的作用域查詢,找到就返回變數的值

//否則會一直向上查詢至window全域性作用域,如果全域性作用域下查詢不到,則就表明變數未宣告

//優先返回區域性作用域下的同名變數

4 2 Javascript之執行環境和作用域

var globalcolor globalcolor function globalfunc console.log globalcolor innerfunc globalfunc console.log globalcolor globalfunccolor globalcolor inner...

JavaScript 4 2 函式高階 this

在函式內部有2個特殊的物件 arguments 和this。this物件是函式執行的環境物件,或者說,是呼叫函式的那個物件。這是函式的最通常用法,屬於全域性性呼叫,因此this就代表全域性物件 global。var x 0 function test test 呼叫函式test 的是全域性物件win...

Javascript之立即執行函式和逗號操作符

定義 此類函式沒有宣告,在一次執行過後即釋放。適合做初始化工作。function 只有表示式才能被執行符號執行 function test 錯,函式宣告不能被執行 function test 可以執行 function test a,b,c 1,2,3 既不報錯也不執行,會被理解成function ...