首页 > 代码库 > javascript学习日记之变量的作用域
javascript学习日记之变量的作用域
```
很显然第一个弹出框并没有如我所想弹出的global而是undefined
这是为什么呢?
其实由于函数作用域特性
函数域始终优于全局域
同名的局部变量会覆盖掉全局变量
而第一次调用alert的时候scope还没正式定义 所以为undefined
以上代码可以理解为:
```
function f(){
var scope;
alert(scope);
var scope ="local";
alert(scope);
};
f();
//等价与函数内变量的声明‘提前‘至函数体顶部
```
javascript学习日记之变量的作用域
javascript学习日记
变量的作用域是往往是人们轻易忽略而又至关重要的问题,尤其是在javascript中。
-
javascript中变量的作用域有以下特点:
- 以函数划分的函数域
- 没有特定的块作用域
- 没有用var声明的变量就是是全局变量
下面来看一个具体示例:
var global =1;
function f(){
var local = 2;
global++;
return global;
}
alert(f()) ;//2
alert(f()) ;//3
alert(window.local);//undefined
代码中可以看出声明一个全局变量global 和一个局部变量local;
而函数f()可以访问外面的全局变量global;
但是在函数f()外 局部变量local是不存在的
很显然函数内的代码可以像访问局部变量那样访问全局变量,
反之则不行
2 函数作用域的声明提前问题
先来看如下代码:
var scope ="global";
function f(){
alert(scope);//undefined
var scope ="local";
alert(scope);//local
}
f();
很显然第一个弹出框并没有如我所想弹出的global而是undefined
这是为什么呢?
其实由于函数作用域特性
函数域始终优于全局域
同名的局部变量会覆盖掉全局变量
而第一次调用alert的时候scope还没正式定义 所以为undefined
以上代码可以理解为:
function f(){
var scope;
alert(scope);
var scope ="local";
alert(scope);
};
f();
//等价与函数内变量的声明‘提前‘至函数体顶部
@XiaoNine
2016-11-20 10:14
字数
阅读 8
javascript学习日记之变量的作用域
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。