1. 程式人生 > 程式設計 >淺談JavaScript作用域

淺談JavaScript作用域

目錄
  • 一、作用域
    • 1、全域性作用域
    • 2、區域性作用域
  • 二、變數的作用域
    • 1、全域性變數
    • 2、區域性變數
    • 3、全www.cppcns.com局變數和區域性變數的區別
  • 三、作用域鏈

    一、作用域

    通常來說,一段程式程式碼中所用到的名字並不總是有效和可用的,而限定這個名字的可用性的程式碼範圍就是這個名字的作用域。作用域的使用提高了程式邏輯的區域性性,增強了程式的可靠性,減少了名字衝突。

    (es6前)中的作用域有兩種:

    • 全域性作用域
    • 區域性作用域(函式作用域)
    • 在ES6後,還有一個塊級作用域,以後在詳述。

    1、全域性作用域

    作用於所有程式碼執行的環境(整個 script 標籤內部)或者一個獨立的 檔案。

    2、區域性作用域

    作用於函式內的程式碼環境,就是區域性作用域。 因為跟函式有關係,所以也稱為函式作用域。

    例如:

      for(let i=0;i<100;i++){
           sum += i;
       }
    
    

    二、變數的作用域

    在Script中,根據作用域的不同,變數可以分為兩種:

    • 全域性變數
    • 區域性變數

    1、全域性變數

    在全域性作用域下宣告的變數叫做全域性變數(在函式外部定義的變數)。
    全域性變數在程式碼的任何位置都可以使用
    在全域性作用域下 var 宣告的變數 是全域性變數
    特殊情況下,在函式內不使用 var 宣告的變數也是全域性變數(不建議使用)

    2、區域性變數

    在區域性作用域下宣告的變數叫做區域性變數(在函式內部定義的變數)
    區域性變數只能在該函式內部使用
    函式內部 var 宣告的變數是區域性變數
    函式的形參實際上就是區域性變數

    3、全域性變數和區域性變數的區別

    • 全域性變數:在任何一個地方都可以使用,只有在瀏覽器關閉時才會被銷燬,因此比較佔記憶體。
    • 區域性變數:只在函式內部使用,當其所在的程式碼塊被執行時,會被初始化;當代碼塊執行結束後,就會被銷燬,因此更節省記憶體空間。

    三、作用域鏈

    根據在內部函式可以訪問外部函式變數的這種機制,用鏈式查詢決定哪些資料能被內部函式訪問,就稱作作用域鏈

    • 只要是程式碼,就至少有一個作用域
    • 寫在函式內部的區域性作用域
    • 如果函式中還有函式,那麼在這個作用域中就又可以誕生一個作用域

    例如:對下面的程式碼進行分析判斷結果是幾

    function f1() {
        var num = 123;
       客棧 function f2() {
            console.log( num );
        }
        f2();
    }
    var num = 456;
    f1();
    
    

    分析如下圖所示:

    在這裡插入圖片描述

    可知最終的結果為:123

    同樣,也可以採取就近原則的方式來查詢變數最終的ccLpWJALCk值。

    到此這篇關於JavaScript作用域詳情介紹的文章就介紹到這了,更多相關JavaScript作用域內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!