undefined

概述

undefined有多重角色,一般狀況下,咱們所說的undefined都指的是全局對象的一個屬性"undefined".函數

語法

undefined

描述

在JavaScript中,undefined這個詞有多重含義.首字母大寫的Undefined表示的是一種數據類型,小寫的undefined表示的是屬於這種數據類型的惟一的一個值.但這兩種undefined都只能存在於文檔或規範中,不能存在於JavaScript代碼中.在JavaScript代碼中,你看到的undefined最有多是全局對象的一個屬性,該屬性的初始值是就是前面所說的原始值undefined,還有種狀況就是,這個undefined是個局部變量,就像其餘普通變量同樣,沒有任何特殊性,它的值不必定是undefined,但一般狀況下都是的.下面咱們所說的undefined,都指的是window.undefined這個屬性.spa

在ES3中(Firefox4以前),window.undefined就是一個普通的屬性,你徹底能夠把它的值改變成爲任意的真值,但在ES5中((Firefox4以後),window.undefined成了一個不可寫,不可配置的數據屬性,它的值永遠是undefined.code

一個未初始化的變量的值爲undefined,一個沒有傳入實參的形參變量的值爲undefined,若是一個函數什麼都不返回,則該函數默認返回undefined.對象

你可使用嚴格相等運算符來判斷一個值是不是undefined:token

var x; if (x === undefined) { // 執行到這裏 } else { // 不會執行到這裏 }
注: 這裏必須使用嚴格相等運算符===,而不能使用普通的相等運算符==,由於 x == undefined成立還多是由於 x爲 null, 在JavaScript中null==  undefined是返回true的.

另外,還可使用typeof來判斷:ip

var x; if (typeof x === 'undefined') { // 執行到這裏 }

有時必須使用typeof的緣由是,若是一個變量根本沒有被聲明,只有使用typeof判斷纔不會報錯,用相等運算符判斷會拋出異常.ci

// x沒有被聲明過 if (typeof x === 'undefined') { // 不會報錯 // these statements execute } if(x === undefined){ // 拋出ReferenceError異常 }

不過若是要檢測的變量是個全局變量,能夠不使用typeof.能夠經過檢測全局對象的同名屬性來代替:文檔

// x可能沒有被聲明過,但若是已經聲明瞭的話,x是個全局變量 if (window.x === undefined) { // 即便window.x不存在,也不會報錯 // 可能會執行到這裏 } if(x === undefined){ // 若是window.x不存在,則會拋出ReferenceError異常 }
相關文章
相關標籤/搜索