經研究發現,兩者之間有很大的區別,不知從英語講,這兩者都有啥區別,研究結果如下
測試os:ubuntu
測試瀏覽器:chrome
測試案例1
console.log(a)
報錯ReferenceError: a is not defined
測試案例2
var a
console.log(a)
無報錯,但是輸出undefined
測試案例2
var b = {};
console.log(b.a)
無報錯,但是輸出undefined
測試案例33
function c() {
}
var d = new c();
console.log(d.a)
無報錯,但是顯示undefined
關於typeof
以上所有用來測試的物件用typeof 回傳的都是String("undefined")
關於或運算||
var d = a||3
報錯a not defined
var a;
var d = a || 3
結果:d==3
var c = 22 || 44
c==22
var c = false || 33
c = = 33
if(x) {
}
報錯
var x
if(x) {
}
if內不執行
總結:
js中有兩種undefined 雖然用typeof 回傳都是String("undefined")
其中定義之後,但是未經任何操作或某物件的一個未定義的屬性,都屬於可以拿來運算的undefined ,可以用來當作邏輯運算
第二種的變量,完全沒有定義,而且沒有任何背景的(x.a,雖然x無a屬性,但是給x面子),屬於報錯類型不能被使用,除非用typeof函數
js中的或運算,不回傳bool值,而是傳回js對兩邊條件最後一個計算的值,例如1||2 1為真,2不需要計算,所以1||2 == 1 a||1 報錯
var a; a|| 1 == 1;
找了本辭典翻譯了一下
undefined可以翻譯成:不明確的,也就是不知道用來幹嘛的
而not defined 可以翻譯成未定義的