JS 做用域及做用域鏈

1、做用域

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

  全局做用域:

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

   函數做用域:

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

  

  例子:3d

    做用域

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

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

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

 

2、做用域鏈

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

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

var x = 10;

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

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

show(fn);

  做用域鏈

 

隨筆整理自 http://www.javashuo.com/article/p-bhfvkjfh-z.html
感謝博主分享!
相關文章
相關標籤/搜索