JavaScript全局变量与局部变量
WEB前端开发社区 今天
在学习JavaScript的变量作用域之前,我们应当明确几点:
JavaScript的变量作用域是基于其特有的作用域链的。
JavaScript没有块级作用域。
函数中声明的变量在整个函数中都有定义。
1、JavaScript的作用域链
首先看下下面这段代码:
<script type="text/javascript">var rain = 1;function rainman(){var man = 2;function inner(){var innerVar = 4; alert(rain); } inner(); //调用inner函数 } rainman(); //调用rainman函数</script>
2、函数体内部,局部变量的优先级比同名的全局变量高。
<script type="text/javascript">var rain = 1; //定义全局变量 rainfunction check(){var rain = 100; //定义局部变量rain alert( rain ); //这里会弹出 100 } check(); alert( rain ); //这里会弹出1</script>
3、JavaScript没有块级作用域。
<script type="text/javascript">function rainman(){// rainman函数体内存在三个局部变量 i j kvar i = 0;if ( 1 ) {var j = 0;for(var k = 0; k < 3; k++) { alert( k ); //分别弹出 0 1 2 } alert( k ); //弹出3 } alert( j ); //弹出0 }</script>
4、函数中声明的变量在整个函数中都有定义。
<script type="text/javascript">function rain(){var x = 1;function man(){ x = 100; } man(); //调用man alert( x ); //这里会弹出 100 } rain(); //调用rain</script>
<script type="text/javascript">var x = 1;function rain(){ alert( x ); //弹出 'undefined',而不是1var x = 'rain-man'; alert( x ); //弹出 'rain-man' } rain();</script>
function rain(){var x; alert( x ); x = 'rain-man'; alert( x );}
5、未使用var关键字定义的变量都是全局变量。
<script type="text/javascript">function rain(){ x = 100; //声明了全局变量x并进行赋值 } rain(); alert( x ); //会弹出100</script>
6、全局变量都是window对象的属性
<script type="text/javascript">var x = 100 ; alert( window.x );//弹出100 alert(x);</script>
<script type="text/javascript">window.x = 100; alert( window.x ); alert(x)</script>
声明:
本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。
赞 (0)