为何输出一个对象不存在的属性,并不会报错呢?见代码  <script type="text/javascript">
var o2=new Object;
o2.color ="green";
o2.showcolor=function(){
alert(this.color); //该属性存在,正常
alert(this.height);     //该属性不存在,为何输出不报错呢?而是输出 undefined
}
o2.showcolor();
  </script>
按理说,这个对象根本就没有 height 属性,输出时应该提示属性不合法呀,
但是却不报错,输出 undefined ,这是为什么呢?

解决方案 »

  1.   

    undefined  就是错误信息提示
      

  2.   

    语法并不犯错,只是该属性不存在,所以给出 undefined 提示
      

  3.   

    var o2=new Object();这样看看
      

  4.   

    javascript 是弱类型语言!没申明的变量就是 “undefined”!
    可以用if 判断一下! 
    script type="text/javascript"> 
    var o2=new Object(); 
    o2.color ="green"; 
    o2.showcolor=function(){
     alert(this.color); //该属性存在,正常
     if(this.height)alert(this.height); //该属性不存在,为何输出不报错呢?而是输出 undefined 

    o2.showcolor(); 
    </script>
      

  5.   

    看看我下面的代码,运行一次看看,同样的 alert(height),上面不报错,下面却报错:heigth未定义
    所以说,undefined 并不是报错呀。报错的那句我能理解,因为这个变量确实不存在,但是不报错的那句我不理解,为何不提示 hright未定义呢?
      <script type="text/javascript">
    var o2=new Object;
    o2.color="green";
    o2.showcolor=function(){
    alert(this.color); //该属性存在,正常
    alert(this.height);     //该属性不存在,为何输出不报错呢?而是输出 undefined
    }
    o2.showcolor();
    alert(height); //这里为何会报错呢?
      </script>
      

  6.   

    这个问题涉及到动态属性的知识。
    alert(this.color);        //该属性存在,正常
    该属性在alert之前是不存在,但在alert时已经动态定义了color属性,只是还没有赋值。
    this.color定义属性color(此属性为动态属性),没有初始化,所以其值为undefined。所以alert(this.color)会弹出undefined。
    如果定义时就初始化alert(this.color=1),则会弹出1。关于动态属性方面的知识,楼主可以参考as。 
      

  7.   

    alert(height);        //这里为何会报错呢?此处height没有定义,也没指定为任何对象的动态属性,就是说height是个不存在的东西,不存在的东西alert自然就找不到了,也就出错了。
      

  8.   

    每种语言都有自己的特点吧, 而且人家也说明是 undefined 了, 不是更好吗?
     
      

  9.   


    关键是,为什么对于普通变量,不是这样处理呢?即对于没有定义的变量。
    alert(height);时,为何报错,而不是输出 undefined 呢?