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

相關文章
相關標籤/搜索