JavaScript中有兩種主要的作用域:全局作用域和局部作用域(也稱為函數作用域)。
1. 全局作用域(Global Scope):全局作用域是指在代碼中任何地方都能訪問的作用域。在瀏覽器環境中,全局作用域通常是指在所有函數和代碼塊之外聲明的變量和函數。全局作用域中聲明的變量和函數在整個程序中都是可見和可訪問的。
var globalVariable = 'I am a global variable';
function globalFunction() {
console.log('I am a global function');
}
console.log(globalVariable); // 輸出:I am a global variable
globalFunction(); // 輸出:I am a global function
2. 局部作用域(Local Scope):局部作用域是指在函數內部聲明的作用域。每當創建一個函數時,都會創建一個新的局部作用域。變量和函數在其所在的局部作用域內是可見和可訪問的,但在其他函數或全局作用域中不可訪問。
function localFunction() {
var localVariable = 'I am a local variable';
console.log(localVariable);
}
localFunction(); // 輸出:I am a local variable
console.log(localVariable); // 拋出錯誤,localVariable 在全局作用域中不可訪問
在ES6中,還引入了塊級作用域(Block Scope)的概念,通過使用`let`和`const`來聲明變量,可以在`if`語句、`for`循環等代碼塊內創建局部作用域。
function blockScopeExample() {
if (true) {
let blockVariable = 'I am a block variable';
const blockConstant = 'I am a block constant';
console.log(blockVariable); // 輸出:I am a block variable
console.log(blockConstant); // 輸出:I am a block constant
}
console.log(blockVariable); // 拋出錯誤,blockVariable 在塊級作用域之外不可訪問
console.log(blockConstant); // 拋出錯誤,blockConstant 在塊級作用域之外不可訪問
}
blockScopeExample();
理解作用域對于編寫可維護和可擴展的JavaScript代碼至關重要,因為它確定了變量和函數的可見性和生命周期。