做用域定義了變量或者函數可有權訪問的範圍。前端
外部環境不能訪問內部環境的任何變量與函數。函數
在 JavaScript 中,每一個函數都有着本身的做用域,在每次調用一個函數的時候 ,就會進入一個函數內的做用域,而當函數執行返回之後,就返回調用前的做用域。spa
當代碼在一個做用域內執行時,就會根據其上下文建立一個做用域鏈,該做用域鏈的用途就是控制當前做用域對於內全部的變量與函數的有序訪問。做用域鏈的最前端,始終都是當前執行代碼所在的做用域的變量對象。code
JavaScript中的函數運行在它們被定義的做用域裏,而不是它們被執行的做用域裏對象
var name = 'jim'; function showName(){ console.log(name); } function show(){ var name = 'tom'; showName(); } show(); // 輸出結果爲jim
對上式變式blog
var name = 'jim'; function show(){ var name = 'tom'; function showName(){ console.log(name); } showName(); } show(); // 輸出結果爲tom