日期:2014-05-16  浏览次数:20446 次

请问in运算符

 function dispalert() {
        var a = {x:1,y:2};
        for (var c in a) {
            document.write(c);  
        }
    }


上面的代码会输出对象a的每一个属性名x、y
可是,不要var居然也可以:

 function dispalert() {
        var a = {x:1,y:2};
        for (c in a) {
            document.write(c);  
        }
    }


c#可不是这样的,上面两段代码有什么不同吗?
------解决方案--------------------
  function dispalert() {
        var a = {x:1,y:2};
        for (c in a) {
            document.write(c);  
        }
    }
dispalert();
alert(c);
      楼主这样试一下就知道了
上面2个代码只有第二个代码才会弹出y而第一个不会。

JS是非常灵活的语言,在任何位置都可以即时声明和使用全局变量,
也就是当你不使用var 来声明的时候,默认变量就是属于window, 所以第二个就是生成了一个
window.C
------解决方案--------------------
js灵活,不像C#严格,所以有时候也容易引起混淆
------解决方案--------------------
不要var即定义c为全局变量!
------解决方案--------------------
name = "hello";  
 function f() {
        var a = "1001";  
        b = 123;   
  }
 f();
 document.write(name);
 document.write(b);
 document.write(a); 
------解决方案--------------------
引用:
name = "hello";    function f() {         var a = "1001";           b = 123;      }  document.write(name);  document.write(b);  document.write(a);   

这段代码,为什么没有输出变量b的值呢?b不是全局变量吗?

晕,你不执行f,代码不走,怎么可能生效呢?
多加强基础,先记再练最后想,在基础不牢的时候别乱琢磨.
------解决方案--------------------
顶LZ先多自己写下js的小例子,多看,多学,js的变量的定义很松的!