經(jīng)研究發(fā)現(xiàn),兩者之間有很大的區(qū)別,不知從英語講,這兩者都有啥區(qū)別,研究結(jié)果如下
測試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
測試案例3
function c() {
}
var d = new c();
console.log(d.a)
無報錯,但是顯示undefined
關(guān)于typeof
以上所有用來測試的對象用typeof 返回的都是 String("undefined")
關(guān)于或運算 ||
var d = a||3
報錯 a not defined
var a;
var d = a || 3
結(jié)果:d==3
var c = 22 || 44
c==22
var c = false || 33
c == 33
if(x) {
}
報錯
var x
if(x) {
}
if內(nèi)不執(zhí)行
總結(jié):
js中有兩種undefined 雖然用typeof 返回都是 String("undefined")
其中 定義之后,但是未經(jīng)任何操作或者某對象的一個未定義的屬性,都屬于 可以拿來運算的 undefined ,可以用來當作邏輯運算
第二種的變量,完全沒有定義,而且沒有任何背景的(x.a,雖然x無a屬性,但是給x面子),屬于報錯類型不能被使用,除非用typeof函數(shù)
js中的或運算,并不返回bool值,而是返回js對兩邊條件最后一個計算的值,比如 1||2 1為真,2不需要計算,所以 1||2 == 1 a||1 報錯
var a; a|| 1 == 1;
找了本辭典翻譯了一下
undefined可以翻譯成:不明確的,也就是不知道用來干嘛的
而 not defined 可以翻譯成 未定義的
新聞熱點
疑難解答
圖片精選