JavaScript中0, "", null, false, undefined的區別
JavaScript
中0, "", null, false, undefined
返回的Boolean
型別均為false
。然而它們所指的並不是同一個概念,需要加以區分。
首先先看一段程式碼:
document.write(typeof(0)) //number
document.write(typeof("")) //string
document.write(typeof(null)) //object
document.write(typeof(false)) //boolean
document.write(typeof(undefined)) //undefined
從上述程式碼可以看出:0
是數字型別物件,空字串是字串型別物件,null
是object
物件,false
是布林型別物件,undefined
還是undefined
型別.。
對於null
為什麼是一個object
物件,這是JavaScript最初實現的一個錯誤,後來被ECMAScript
沿用下來。可以將它理解為一個不存在的物件的佔位符。
使用==
操作將0
和false
與其他物件進行比較:
document.write(false==undefined); //false
document.write(false==null); //false
document.write(undefined==0); //false
document.write(null==0); //false
document.write(""==0); //true
document.write(false==0); //true
document.write(false==""); //true
document.write(null==undefined); //true
觀察可發現:0、""
和false
是相等的,null
和undefined
是相等的,而undefined
和null
並不等於false
物件。
可以把0、""
和false
歸為一類,稱之為“假值”,把null
和undefined
歸為一類,稱之為“空值”。假值還是一個有效的物件,所以可以對其使用toString
等型別相關方法,空值則不行。
document.write(false.toString()); // false
document.write("".length); // 0
document.write((0).toString()); // 0
document.write(undefined.toString()); // throw exception "undefined has no properties"
document.write(null.toString()); // "null has no properties"
undefined
表示無效物件,null
表示空物件。當宣告的變數未被初始化時其預設值為undefined
;如果被賦予null
,則代表變數初始化值為空值。ECMAScript
認為undefined
是從null
派生出來的所以把他們定義為相等。
以下兩種方式會輸出false
:
document.write(null===undefined); //false
document.write(typeof(null)==typeof(undefined)); //false
因為===
代表的是絕對等於,判斷值及型別是否完全相等。null
和undefined
各自的type
在前面已經說過。
相關文章
- JavaScript中的“undefined、null”區別?JavaScriptUndefinedNull
- JavaScript undefined與null區別JavaScriptUndefinedNull
- javascrit中undefined和null的區別JavaUndefinedNull
- js中null和undefined的區別JSNullUndefined
- js中undefined和null的區別JSUndefinedNull
- JavaScript 05筆記(null、undefined、NaN的區別)JavaScript筆記NullUndefinedNaN
- null 和 undefined 的區別NullUndefined
- null 和 undefined 的區別!NullUndefined
- undefined與null的區別UndefinedNull
- undefined 和 null 區別?UndefinedNull
- null和undefined區別NullUndefined
- null >=0 ? true:falseNullFalse
- JS 的型別(null 和 undefined 的區別)JS型別NullUndefined
- 探索javascript中null和undefined的深淵JavaScriptNullUndefined
- NULL和0的區別Null
- JavaScript基本資料型別之undefined和nullJavaScript資料型別UndefinedNull
- JS 應用篇(一):Undefined與Null的區別JSUndefinedNull
- undefined與除去null的其他資料比較返回都是falseUndefinedNullFalse
- MySQL中is not null和!=null和<>null的區別MySqlNull
- TypeScript Null和Undefined 型別TypeScriptNullUndefined型別
- JavaScript基本概念整理(null、undefined)JavaScriptNullUndefined
- php中0,'',null,false,true,FLASE,TREU,array()的相等恆等學習PHPNullFalse
- null == undefined ?NullUndefined
- js中return、return true、return false的區別JSFalse
- undefined和nullUndefinedNull
- null 和 undefinedNullUndefined
- CSS 中 stopPropagation, preventDefault 和 return false 的區別CSSFalse
- 0、""(空字串)、Null、Empty、與 Nothing 的區別 (轉)字串Null
- JS中判斷null、undefined與NaN的方法JSNullUndefinedNaN
- [譯] 理解 JavaScript 中的 undefinedJavaScriptUndefined
- JavaScript中的“=、==、===”區別JavaScript
- undefined與null與?. ??UndefinedNull
- Null 與 “” 的區別Null
- preventDefault()與return false區別False
- JavaScript中for in 和for of的區別JavaScript
- Javascript中“==”與“===”的區別JavaScript
- JavaScript中==和===的區別JavaScript
- 【JavaScript】奇怪的知識void 0 === undefined 為 trueJavaScriptUndefined