JavaScript語言與其他語言有很多特殊性。
1、基本的變量作用域
var scope='global';
function checkScope(){
var scope ='local';
console.log(scope);
//變量作用域是函數(shù)體內(nèi)
}
checkScope();
console.log(scope);
//變量作用域是全局變量
例子中,聲明了全局變量scope和函數(shù)體內(nèi)的局部變量scope。在函數(shù)體內(nèi)部,局部變量優(yōu)先級比全局變量要高,如果一個局部變量的名字與全局變量相同,那么在聲明局部變量的函數(shù)體范圍內(nèi),局部變量將覆蓋同名的全局變量。
2、
scope = 'global';
function checkScope(){
scope='local';
console.long(scope);
//local
myScope ='local';
console.log(myScope);
//local
}
checkScope();
console.log(scope);
//local
console.log(myScope);
//local
上個例子中在函數(shù)體外,scope的值變成了local,在函數(shù)體外也可以訪問myScope的變量了。這是因為全局作用域變量可以省略var關(guān)鍵字,但是如果在函數(shù)體內(nèi)聲明變量時不使用var關(guān)鍵字,就會發(fā)生上面的現(xiàn)象。首先函數(shù)體內(nèi)的第一行語句,把全局變量中的scope變量的值改變了。而在聲明myScope變量時,由于沒有var關(guān)鍵字,JavaScript就好在全局范圍內(nèi)聲明這個變量。因此在局部變量聲明時使用var關(guān)鍵字是一個很好的習(xí)慣。