這篇文章主要介紹了javascript中的undefined和not defined區別,需要的朋友可以參考下
經研究發現,兩者之間有很大的區別,不知從英語講,這兩者都有啥區別,研究結果如下
測試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
關於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 可以翻譯成 未定義的