Javascript中undefined和not defined有什么区别?

undefined是JavaScript语言中定义的五个原始类中的一个,换句话说,undefined并非程序报错,而是程序容许的一个值。javascript

not defined是javascript在运行咱们的javascript代码时,遇到没有定义就用来console或者运算的变量时爆出来的错误。java

那么问题来了:在许多的javascript教程中都介绍有javascript变量即便不定义也能够直接拿来使用,可是请注意,这个使用是指能够被赋值,可是不能够被运算。看一个例子json

 

[javascript] view plain copyspa

  1. var temp;  
  2. temp2 = 123;  
  3. alert(temp2);  
  4. temp3 = temp4+1;  
  5. alert(temp3);  

在上面的代码中,第一个alert能够正常弹窗为123;可是第二个alert是不会执行的,由于使用了没有定义的temp4来运算,这是不容许的。.net

 

实际用在哪里? 做兼容不要报错,传值若是为空不报错对象

eg:  兼容问题blog

   (window.XMLHttpRequest)和(XMLHttpRequest)  前者返回undefine 后者返回 not define(报错)教程

       赋值问题ip

function a(json){get

    json.b = json.b || {}   //若是不或上{}空对象,外面不传参数,会报错,由于外面传进来的是一个null

                                   //json是一个not define的值,就给他做赋值或者运算操做,就会报错

    return json.b;

}

console.log(a());

另一些注意地方 

  var a = null;
  var b = false;
  var c;
  var d = {};
  if(a){                    // 除了d,其他打印结果为1
    console.log(1);
  } else {
    console.log(2);
  }
  d.t = 4;
  console.log(d);        // object {t:4}
  console.log(d.t);     // 4
  a.t = 2;                  // not define 只要定义变量的布尔值是false,那么全不能传入属性
  console.log(a.t);
  b.t = 1;
  console.log(b.t);
  c.t = 3;
  console.log(c.t);     

最终结果  2  object {t:4}  4   't' not define

相关文章
相关标签/搜索