js 做用域和做用域鏈

1、做用域

  在 Javascript 中,做用域分爲 全局做用域 和 函數做用域函數

  全局做用域:

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

   函數做用域:

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

  

  例子:對象

    做用域

    做用域有上下級關係,上下級關係的肯定就看函數是在哪一個做用域下建立的。如上,fn做用域下建立了bar函數,那麼「fn做用域」就是「bar做用域」的上級。blog

    做用域最大的用處就是隔離變量,不一樣做用域下同名變量不會有衝突。ip

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

 

2、做用域鏈

  通常狀況下,變量取值到 建立 這個變量 的函數的做用域中取值。it

  可是若是在當前做用域中沒有查到值,就會向上級做用域去查,直到查到全局做用域,這麼一個查找過程造成的鏈條就叫作做用域鏈。io

複製代碼
var x = 10;

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

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

show(fn);
複製代碼

  做用域鏈

相關文章
相關標籤/搜索