一、作用域
在 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);