`
jiahh
  • 浏览: 37225 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

js中成员变量 和局部变量发生奇怪的问题

 
阅读更多


//当局部变量重新定义和成员变量重名,成员变量将是undefined
<script type="text/javascript">
          var a=1;   
          function aa(){
          alert('aaaaaaa'+a);   //这边答应undefined
           alert(!a);           //这边居然打印true
           if(!a){
             var a = 10;
           }
           alert(a);            //这边居然打印10.。。。
          }
          aa();
</script>



var a = 1;
function b()
{
a = 10;
alert('aaaa'+a);
return;
function a() {}
}
b();
alert(a);    //这边居然打印1.。。汗。。。。。
                         
0
0
分享到:
评论
1 楼 wjzsuperman 2013-02-05  
这个我是这么认为的:js函数中变量的作用域范围是整个函数,比如:
if(1){
var ff='123';
}
alert(ff);   //打印123
变量ff虽然是在if语句块中定义的,但是他在脱离了if语句之后也是有作用的,
js在编译的时候会将函数中所有的定义语句提到函数开头,所以你上面的例子结果都是正确的。
第一个相当于: var a=1;   
          function aa(){
           var a;        
           alert('aaaaaaa'+a);   //这边答应undefined
           alert(!a);          
           if(!a){
             var a = 10;
           }
           alert(a);            
          }
          aa();
第二个相当于:
var a = 1;
function b()
{
var a;//这是由于你下面定义了一个a函数
a = 10;
alert('aaaa'+a);
return;
function a() {}
}
b();
alert(a);


这个只是我的个人理解 ,有误请指正   

相关推荐

Global site tag (gtag.js) - Google Analytics