溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

javascript基礎(chǔ)進階_深入剖析執(zhí)行環(huán)境及作用域鏈

發(fā)布時間:2020-09-29 00:42:10 來源:腳本之家 閱讀:151 作者:偏執(zhí)于肉夾饃和煎餅果子 欄目:web開發(fā)

執(zhí)行環(huán)境

執(zhí)行環(huán)境定義了變量或函數(shù)有權(quán)訪問的其他函數(shù),決定了他們各自的行為。每個執(zhí)行環(huán)境都有一個與之關(guān)聯(lián)的變量對象。

變量對象

環(huán)境中定義的所有變量和函數(shù)都保存在這個對象中。

全局執(zhí)行環(huán)境

全局執(zhí)行環(huán)境是最外圍的一個執(zhí)行環(huán)境。在web瀏覽器中,全局執(zhí)行環(huán)境被認為是Window對象,因此所有全局變量和函數(shù)都是作為window對象的屬性和方法創(chuàng)建的。

每個函數(shù)都有自己的執(zhí)行環(huán)境。

作用域鏈

當代碼在一個環(huán)境中執(zhí)行,會創(chuàng)建變量對象的一個作用域鏈。

用途:保證對執(zhí)行環(huán)境有權(quán)訪問的所有變量和函數(shù)有序訪問。

特點:作用域鏈的前端始終是當前執(zhí)行的代碼所在的環(huán)境的變量對象。如果這個環(huán)境是函數(shù),則將其活動對象作為變量對象?;顒訉ο笞铋_始只包含arguments對象。作用域的下一個變量對象來自包含環(huán)境,而再下個來自下一個包含環(huán)境。

var color ="blue";
function changeColor() {
 
 var anotherColor ="red";
 
 function swapColors() {
  var tempColor = anotherColor;
  anotherColor = color;
  color = tempColor;
 }

 swapColors();
}

changeColor();

如圖表示執(zhí)行環(huán)境,內(nèi)部環(huán)境可以通過作用域鏈訪問外部環(huán)境,但是外部環(huán)境不能訪問內(nèi)部環(huán)境中的變量和函數(shù)。每個環(huán)境都可以向上搜索作用域鏈,以查詢變量和函數(shù);但是不能向下搜索。

javascript基礎(chǔ)進階_深入剖析執(zhí)行環(huán)境及作用域鏈

沒有塊級作用域 聲明變量

使用var聲明的變量會自動添加到最接近的環(huán)境中。如果省略var關(guān)鍵字,即會添加到全局環(huán)境中。

function add(num1,num2) {

 var sum = num1+num2;

 return sum;

}

var result= add(10,10)

console.log(sum)


javascript基礎(chǔ)進階_深入剖析執(zhí)行環(huán)境及作用域鏈

sum is not defined

function add(num1,num2) {

 sum = num1+num2;

 return sum;

}

var result= add(10,10)

console.log(sum)


javascript基礎(chǔ)進階_深入剖析執(zhí)行環(huán)境及作用域鏈

查詢標識符

搜索過程從作用域鏈的前端開始,向上逐級查詢與給定名字匹配的標識符,找到即終止搜索。即如果局部環(huán)境中存在著同名標識符,就不會使用位于父環(huán)境中的標志符。

var color ="red";

function getColor() {



 return color;

}



console.log(getColor())


javascript基礎(chǔ)進階_深入剖析執(zhí)行環(huán)境及作用域鏈

var color ="red";

function getColor() {

 var color="green";

 return color;

}



console.log(getColor())


javascript基礎(chǔ)進階_深入剖析執(zhí)行環(huán)境及作用域鏈

參考:《javascript高級程序設(shè)計(第三版)》

以上這篇javascript基礎(chǔ)進階_深入剖析執(zhí)行環(huán)境及作用域鏈就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI