一些語言如C、java都有塊級作用域,即花括號內的每一段代碼都具有各自的作用域,而且變量在聲明它們的代碼段之外是不可見的,但是javascript沒有塊級作用域。javascript使用函數作用域,即變量在聲明它們的函數體以及這個函數體嵌套的任意函數體內都是有定義的,也即函數內聲明的所有變量在函數體內始終是可見的。這樣就意味著變量在聲明之前就可以使用,這個特性被稱為"聲明提前",即javascript函數里聲明的所有變量都被提前至函數的頂部。來看個例子。
復制代碼 代碼如下:
var test1 = "globalVariable";
function test(){
console.log(test1);
var test1 = "localVariable";
console.log(test1);
}
復制代碼 代碼如下:
var test1 = "globalVariable";
function test(){
var test1; //將函數內的變量聲明提前至函數頂部
console.log(test1);
test1 = "localVariable"; //賦值
console.log(test1);
}
復制代碼 代碼如下:
var test1 = "globalVariable";
function test(){
console.log(test1);
test1 = "localVariable";
console.log(test1);
}
新聞熱點
疑難解答
圖片精選