在javascript中变量的作用范围

JavaScript中并没有强制性的要求必须提前声明变量,所以是可以不声明就可以使用的,这就造成了很多问题,比如会污染全局变量。因为根据变量定义的范围不同,变量有全局变量与局部变量之分。直接定义的变量是全局变量,可以被所有的脚本访问;而在函数中定义的变量是局部变量,只能在函数内部有效。如果二者使用的变量名一样,局部变量就会覆盖全局变量,即污染了全局变量。下面是一些代码:

1.

.

结果是:全局变量

要输出scope值,因为函数内部并未定义声明此变量,所以就会到外层去找scope,发现外层有scope全局变量,于是就把这个值输出。

2.


结果是:undefined

在test()函数内部声明了局部变量scope,并未进行赋值动作,所以此时scope的值是undefined

3.


结果是:undefined

代码示例2与代码示例3的结果一样,说明声明变量是不分时间先后顺序的,只要在函数内部声明了就一定会起作用,我们可以做个实验:

A.代码示例2中写 var scope="局部变量",即在声明的同时为其赋值,那么输出的结果就会是局部变量

B.在代码示例3中声明的同时也赋值的话,输出的结果却是undefined

说明声明变量没有时间先后顺序之分,不管是先声明再输出还是先输出后声明,效果是一样的;但是赋值动作不一样,代码是会按顺序进行解释执行的。

若把示例代码2和3中的var删除,那么输出的将是:全局变量,因为没有加var,作用域就是全局的

4.


结果是:undefined

             局部变量

全局变量可以不声明var,但是在 函数内变量必须声明var,在定义全局变量时加或不加var关键字没什么影响;但在定义局部变量时如果不加var关键字javascript解释程序会将其解释为全局变量。


转自:http://blog.csdn.net/tanyacui/article/details/52214763
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值