JavaScript变量的作用域

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关键字是一个很好的习惯。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容