JavaScript 变量的作用域

1.  全局作用域(Global Scope)

  在代码中任何地方都能访问到的对象拥有全局作用域,一般来说以下几种情形拥有全局作用域:

  (1)最外层函数和在最外层函数外面定义的变量拥有全局作用域,例如:

1
2
3
4
5
6
7
8
9
10
11
12
var  authorName= "山边小溪" ;
function  doSomething(){
     var  blogName= "梦想天空" ;
     function  innerSay(){
         alert(blogName);
     }
     innerSay();
}
alert(authorName);  //山边小溪
alert(blogName);  //脚本错误
doSomething();  //梦想天空
innerSay()  //脚本错误

  (2)所有末定义直接赋值的变量自动声明为拥有全局作用域,例如:

1
2
3
4
5
6
7
8
function  doSomething(){
     var  authorName= "山边小溪" ;
     blogName= "梦想天空" ;
     alert(authorName);
}
doSomething();  //山边小溪
alert(blogName);  //梦想天空
alert(authorName);  //脚本错误

  变量blogName拥有全局作用域,而authorName在函数外部无法访问到。

  (3)所有window对象的属性拥有全局作用域

  一般情况下,window对象的内置属性都拥有全局作用域,例如window.name、window.location、window.top等等。

  1.  局部作用域(Local Scope)  

  和全局作用域相反,局部作用域一般只在固定的代码片段内可访问到,最常见的例如函数内部,所有在一些地方也会看到有人把这种作用域称为函数作用域,例如下列代码中的blogName和函数innerSay都只拥有局部作用域。

1
2
3
4
5
6
7
8
9
function  doSomething(){
     var  blogName= "梦想天空" ;
     function  innerSay(){
         alert(blogName);
     }
     innerSay();
}
alert(blogName);  //脚本错误
innerSay();  //脚本错误

由于for循环并不是一个函数体,所以for循环中定义变量的作用域是for循环所在的函数体

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值