js中全部变量与局部变量的问题与闭包
来源:互联网 发布:知乎成功的原因 编辑:程序博客网 时间:2024/04/30 10:22
在javascript中,全部变量与局部变量是新手们最容易接触到的问题,今天就来讲一下全局变量与局部变量的差异:
先来说一下闭包这个概念,闭包是指子函数使用父函数的局部变量,即function使用了function本身之外的函数。
全局变量可理解为在函数外声明,但在函数中调用依然可以获得,即
<script type="text/javascript">
var a = 'z';
function test(){
alert(a);
}
test();
</script>
局部变量可理解为在某函数内声明,且只能在声明的那个函数中使用,即
<script type="text/javascript">
var a = 'z';
function test(){
var a = 'x';
alert(a);
}
test();
alert(a);
</script>
可见,在函数中声明局部变量只会影响函数内的变量,并不会影响到外面的全局变量,即使他们变量名相同。
那么我们来做一道题,代码如下
<script type="text/javascript">
var a = 'z';
function test(){
var a;
alert(a);
a = 'x';
alert(a);
}
test();
alert(a);
</script>
此题运行结果为 undefined、x和z ,因为在函数中再次声明了a,但没有赋值,故第一次结果为undefined ,接下来a='x',第二次结果就为x,第三次alert(a)中的a为全局变量的a,故结果为z。再次证明局部变量不会影响全局变量。
然而我在浏览别人的文章时发现下面这段代码,然而这段代码和上面所说并不相同
<script type="text/javascript">
var a =1;
function test(){
alert(a);
var a = 2;
alert(a);
}
test();
alert(a);
</script>
此题根据以上思路,根据顺序结构,先弹出 1 ,其次弹出 2 ,最后弹出 1,然后运行代码后发现,结果为undefined,2,1。
这是我觉得奇怪的一点,至于为什么可去@zyz511919766的博客看
http://blog.csdn.net/zyz511919766/article/details/7276089 此为链接
谢谢观看
- js中全部变量与局部变量的问题与闭包
- js中全局变量与局部变量实例、闭包
- js中 局部变量、全局变量、闭包
- JS的全局变量与局部变量
- js的全局变量与局部变量
- JS全局变量与局部变量的理解
- js局部变量与全局变量的
- js变量:局部变量、全局变量、闭包
- js变量:全局变量、局部变量、闭包
- js闭包与变量
- JS闭包与变量
- 清楚js的变量基础:局部变量、全局变量、闭包
- js 全局变量与局部变量
- js全局变量与局部变量
- js全局变量与局部变量
- 闭包与变量的经典问题
- 局部变量与成员变量的同名问题&显示初始化
- java中成员变量与局部变量
- java泛型初探
- windows qt 使用c++ posix接口编写多线程程序(一)
- Android时间轴效果的实现
- pdo-quote()之防 sql 注入
- Parencodings
- js中全部变量与局部变量的问题与闭包
- 控件颜色,透明度对照表
- android源代码分享
- python & openCV 人像-1
- Hamming Embedding 汉明嵌入
- Java代码从编译到执行
- MYSQL分表
- js数据类型详细
- 杂花生树(十)