javascript中的作用域scope介绍
更新时间:2010年12月28日 23:16:26 作者:
在一般程序设计语言中,作用域是按块来划分的。即“变量定义在哪个块之内,这个块就是变量的有效范围”。
而在javascript中,变量的作用域是按函数来划分的——变量在某个函数范围内有效。比如:
var f = false;
if(true) { var f = true; } //此时f位于if内,也就是块内,等价于还是全局范围内
alert(f) //所以,结果为true
再如下例:
var f = false;
function test() {
var f = true; //这是函数内定义的变量,只在函数内部有效,函数执行完毕后,该变量将被释放
}
test();
alert(f) //结果为false,并没有因为test()的执行而改变
再有,在javascript中声明的全局变量都可以看作是window对象的一个属性,比如:
var test = "this is a test";
alert(window.test == test) //结果为true
这正好验证了上边所说的全局变量也是window对象的属性
最后,我们来看
[code]
function test() {
f = false;
}
test();
alert(f) //结果为false
[html]
那么,如果在声明变量时,如果不添加var(隐式声明),也被看作了全局变量了,尽管它是定义在函数之内的。
复制代码 代码如下:
var f = false;
if(true) { var f = true; } //此时f位于if内,也就是块内,等价于还是全局范围内
alert(f) //所以,结果为true
再如下例:
复制代码 代码如下:
var f = false;
function test() {
var f = true; //这是函数内定义的变量,只在函数内部有效,函数执行完毕后,该变量将被释放
}
test();
alert(f) //结果为false,并没有因为test()的执行而改变
再有,在javascript中声明的全局变量都可以看作是window对象的一个属性,比如:
复制代码 代码如下:
var test = "this is a test";
alert(window.test == test) //结果为true
这正好验证了上边所说的全局变量也是window对象的属性
最后,我们来看
[code]
function test() {
f = false;
}
test();
alert(f) //结果为false
[html]
那么,如果在声明变量时,如果不添加var(隐式声明),也被看作了全局变量了,尽管它是定义在函数之内的。
相关文章
微信二次分享报错invalid signature问题及解决方法
基于微信公众号开发的h5页面(使用jssdk接口),由用户A分享给用户B,用户B再次分享这个页面时,不能成功分享。这篇文章主要介绍了微信二次分享报错invalid signature问题及解决方法,需要的朋友可以参考下2019-04-04使用 Jest 和 Supertest 进行接口端点测试实例详解
这篇文章主要介绍了使用 Jest 和 Supertest 进行接口端点测试,结合实例形式详细分析了使用 Jest 和 Supertest 进行接口端点测试具体原理、操作技巧与相关注意事项,需要的朋友可以参考下2020-04-04JavaScript基于inquirer封装一个控制台文件选择器
这篇文章主要介绍了JavaScript基于inquirer封装一个控制台文件选择器,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下2022-08-08
最新评论