javascript中的undefined 和 not defined

來源:互聯網
上載者:User

經研究發現,兩者之間有很大的區別,不知從英語講,這兩者都有啥區別,研究結果如下


測試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 可以翻譯成 未定義的











聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.