溫馨提示×

溫馨提示×

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

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

JavaScript作用域有哪些

發(fā)布時間:2021-12-06 12:19:12 來源:億速云 閱讀:152 作者:小新 欄目:開發(fā)技術

小編給大家分享一下JavaScript作用域有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

    一、作用域

    通常來說,一段程序代碼中所用到的名字并不總是有效和可用的,而限定這個名字的可用性的代碼范圍就是這個名字的作用域。作用域的使用提高了程序邏輯的局部性,增強了程序的可靠性,減少了名字沖突。

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

    • 全局作用域

    • 局部作用域(函數(shù)作用域)

    • 在ES6后,還有一個塊級作用域,以后在詳述。

    1、全局作用域

    作用于所有代碼執(zhí)行的環(huán)境(整個 script 標簽內部)或者一個獨立的 js 文件。

    2、局部作用域

    作用于函數(shù)內的代碼環(huán)境,就是局部作用域。 因為跟函數(shù)有關系,所以也稱為函數(shù)作用域。

    例如:

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

    二、變量的作用域

    在JavaScript中,根據(jù)作用域的不同,變量可以分為兩種:

    • 全局變量

    • 局部變量

    1、全局變量

    在全局作用域下聲明的變量叫做全局變量(在函數(shù)外部定義的變量)。
    全局變量在代碼的任何位置都可以使用
    在全局作用域下 var 聲明的變量 是全局變量
    特殊情況下,在函數(shù)內不使用 var 聲明的變量也是全局變量(不建議使用)

    2、局部變量

    在局部作用域下聲明的變量叫做局部變量(在函數(shù)內部定義的變量)
    局部變量只能在該函數(shù)內部使用
    在函數(shù)內部 var 聲明的變量是局部變量
    函數(shù)的形參實際上就是局部變量

    3、全局變量和局部變量的區(qū)別

    • 全局變量:在任何一個地方都可以使用,只有在瀏覽器關閉時才會被銷毀,因此比較占內存。

    • 局部變量:只在函數(shù)內部使用,當其所在的代碼塊被執(zhí)行時,會被初始化;當代碼塊運行結束后,就會被銷毀,因此更節(jié)省內存空間。

    三、作用域鏈

    根據(jù)在內部函數(shù)可以訪問外部函數(shù)變量的這種機制,用鏈式查找決定哪些數(shù)據(jù)能被內部函數(shù)訪問,就稱作作用域鏈

    • 只要是代碼,就至少有一個作用域

    • 寫在函數(shù)內部的局部作用域

    • 如果函數(shù)中還有函數(shù),那么在這個作用域中就又可以誕生一個作用域

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

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

    分析如下圖所示:

    JavaScript作用域有哪些

    可知最終的結果為:123

    同樣,也可以采取就近原則的方式來查找變量最終的值。

    以上是“JavaScript作用域有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道!

    向AI問一下細節(jié)

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

    AI