js 作用域和作用域鏈


一、作用域

  在 Javascript 中,作用域分為 全局作用域 和 函數作用域

  全局作用域:

    代碼在程序的任何地方都能被訪問,window 對象的內置屬性都擁有全局作用域。

   函數作用域:

    在固定的代碼片段才能被訪問

  

  例子:

    作用域

    作用域有上下級關系,上下級關系的確定就看函數是在哪個作用域下創建的。如上,fn作用域下創建了bar函數,那么“fn作用域”就是“bar作用域”的上級。

    作用域最大的用處就是隔離變量,不同作用域下同名變量不會有沖突。

    變量取值:到創建 這個變量 的函數的作用域中取值

 

二、作用域鏈

  一般情況下,變量取值到 創建 這個變量 的函數的作用域中取值。

  但是如果在當前作用域中沒有查到值,就會向上級作用域去查,直到查到全局作用域,這么一個查找過程形成的鏈條就叫做作用域鏈。

復制代碼
var x = 10;

function fn(){
    console.log(x);
}

function show(f){
    var x = 20;
    (function(){
       f();    // 10
    })()  
}

show(fn);
復制代碼

  作用域鏈


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM