JavaScript作用域是指在代碼中聲明變量時,這些變量能夠被訪問的范圍。JavaScript中有全局作用域和局部作用域,同時在ES6中新增了塊級作用域。
全局作用域指的是在整個JavaScript文件中聲明的變量,它們在任何地方都可以被訪問到。
var a = 10; function test() { console.log(a); // 輸出10 } test();
在上面的代碼中,變量a在全局作用域中聲明,因此在test函數中可以訪問到它。
局部作用域指的是在函數中聲明的變量,它們只能在函數內部訪問到。
function test() { var a = 10; console.log(a); // 輸出10 } test(); console.log(a); // 報錯,a未定義
在上面的代碼中,變量a在test函數中聲明,因此只能在函數內部訪問到。
塊級作用域指的是在if語句、for循環等語句塊中聲明的變量,它們只能在語句塊內部訪問到。
if (true) { let a = 10; console.log(a); // 輸出10 } console.log(a); // 報錯,a未定義
在上面的代碼中,變量a在if語句塊中聲明,因此只能在語句塊內部訪問到。
當存在嵌套作用域時,內部作用域可以訪問外部作用域的變量,但外部作用域不能訪問內部作用域的變量。
function outer() { var a = 10; function inner() { console.log(a); // 輸出10 } inner(); } outer(); console.log(a); // 報錯,a未定義
在上面的代碼中,inner函數在outer函數內部聲明,因此可以訪問outer函數內部的變量a。
最后需要注意的是,在ES6之前JavaScript只有全局作用域和局部作用域,沒有塊級作用域。
總之,JavaScript作用域是非常重要的概念,理解它可以幫助我們更好地編寫JavaScript代碼。
上一篇php 下拉菜單