《javascript進階程式設計》讀書筆記——範圍

來源:互聯網
上載者:User

執行環境:
1.  執行環境(execution context):定義了變數和函數有權訪問的其他資料,決定了它們它們各自的行為2. 每個執行環境都有一個與之關聯的 變數對象( variable object ),執行環境中定義的所有變數和函數都儲存在這個對象中。3. 我們編寫的代碼是無法訪問到這個對象,但解析器在處理資料時會在後台使用它 4. 全域執行環境是最外圍的一個執行環境5. 某個執行環境中的所有代碼執行完畢後,該環境被銷毀,儲存在其中的所有變數和函數也隨之銷毀(全域執行環境知道應用程式退出——例如關閉網頁或者遊覽器——時才銷毀)6. 每個函數在被調用時都會建立自己的執行環境,當執行流進入一個函數時,函數的環境會被推入一個環境棧中,而在函數執行之後,棧將其環境彈出,把控制權返回給之前的執行環境,ECMAScript程式中的執行流正是由這個方便的機制控制著。   範圍:1. 當代碼在一個執行環境中執行時,會建立由變數對象構成的 範圍鏈(scope chain)2. 範圍鏈的用途,是保證對執行環境有權訪問的所有變數和函數的 有序訪問3. 範圍鏈前端,都是當前執行環境的代碼所在環境的變數對象。4. 如果這個環境是函數,則將其使用中的物件( activation object )作為變數對象,使用中的物件在最開始的時候只包含一個變數,即arguments對象(這個對象在全域環境中是不存在的)5. 範圍鏈的下一個變數對象來自包含(外部)環境,而再一個變數對象則來自下一個包含環境。這樣,一直延續到全域執行環境;全域執行環境的變數對象始終是範圍鏈的最後一個對象   標識符解析:標識符解析是沿著範圍鏈一級一級地搜尋標識符的過程,搜尋過程始終從範圍鏈的前端開始,然後逐級向後回溯,知道找到標識符為止(如果找不到標識符,通常會導致錯誤發生)  javascript中沒有塊級範圍
if(true){
var name = 'zhujiadun';
}
console.log(name);//zhujiadun
變數聲明:一、
function add(num1,num2){
var sum = num1 + num2;
return sum;
}
var result = add(10,20);
console.log(result);//30
console.log(sum);//報錯
 二、
function add(num1,num2){
sum = num1 + num2;
return sum;
}
var result = add(10,20);
console.log(result);//30
console.log(sum);//30
 在使用var關鍵字聲明變數時,這個變數將自動添加到舉例最近的可用環境中在編寫javascript代碼的過程中,不用var聲明而直接初始設定變數是一個常見的錯誤做法,因為這樣可能會導致錯誤。我們的建議是在初始設定變數之前,一定要先聲明;這樣就可以避免類似情況 用var聲明變數,在函數外部,也就是說在window地區不加var確實是一樣的,因為都會是全域的效果,而如果如含內部,加var就是局部變數,不加則是全域變數    查詢標識符:逐級向上尋找 當某個函數第一次被調用時,會建立一個執行環境(execution context)即相應的範圍鏈,並吧範圍鏈賦值給一個特殊的內部屬性Scope,然後使用this,arguments和其他具名引數的值來初始化函數的使用中的物件( activation object )。但在範圍中,外部函數的使用中的物件始終處於第二位.....,依次類推  參考書:《javascript進階程式設計》 
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.