JavaScript语言与其他语言有很多特殊性。
1、基本的变量作用域
var scope='global';
function checkScope(){
var scope ='local';
console.log(scope);
//变量作用域是函数体内
}
checkScope();
console.log(scope);
//变量作用域是全局变量
例子中,声明了全局变量scope和函数体内的局部变量scope。在函数体内部,局部变量优先级比全局变量要高,如果一个局部变量的名字与全局变量相同,那么在声明局部变量的函数体范围内,局部变量将覆盖同名的全局变量。
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
上个例子中在函数体外,scope的值变成了local,在函数体外也可以访问myScope的变量了。这是因为全局作用域变量可以省略var关键字,但是如果在函数体内声明变量时不使用var关键字,就会发生上面的现象。首先函数体内的第一行语句,把全局变量中的scope变量的值改变了。而在声明myScope变量时,由于没有var关键字,JavaScript就好在全局范围内声明这个变量。因此在局部变量声明时使用var关键字是一个很好的习惯。