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
- JavaScript 05筆記(null、undefined、NaN的區別)JavaScript筆記NullUndefinedNaN
- javascrit中undefined和null的區別JavaUndefinedNull
- js中null和undefined的區別JSNullUndefined
- js中undefined和null的區別JSUndefinedNull
- null 和 undefined 的區別NullUndefined
- null 和 undefined 的區別!NullUndefined
- undefined 和 null 區別?UndefinedNull
- null和undefined區別NullUndefined
- JS 的型別(null 和 undefined 的區別)JS型別NullUndefined
- JavaScript基本資料型別之undefined和nullJavaScript資料型別UndefinedNull
- JS 應用篇(一):Undefined與Null的區別JSUndefinedNull
- JavaScript基本概念整理(null、undefined)JavaScriptNullUndefined
- TypeScript Null和Undefined 型別TypeScriptNullUndefined型別
- [Javascript] Replace undefined with void 0JavaScriptUndefined
- null 和 undefinedNullUndefined
- CSS 中 stopPropagation, preventDefault 和 return false 的區別CSSFalse
- js中return、return true、return false的區別JSFalse
- undefined與null與?. ??UndefinedNull
- JS中判斷null、undefined與NaN的方法JSNullUndefinedNaN
- 【JavaScript】奇怪的知識void 0 === undefined 為 trueJavaScriptUndefined
- JavaScript中的“=、==、===”區別JavaScript
- [譯] 理解 JavaScript 中的 undefinedJavaScriptUndefined
- preventDefault()與return false區別False
- Python中none和null的區別詳解!PythonNoneNull
- JavaScript中for in 和for of的區別JavaScript
- Javascript中“==”與“===”的區別JavaScript
- JavaScript中==和===的區別JavaScript
- [Typescript] Accept Anything Except Null or UndefinedTypeScriptNullUndefined
- undefined會變為null嗎?UndefinedNull
- 30. JavaScript中的“=、 =、===”區別?JavaScript
- 隨筆:MySQL中'' ' ' NULL在Innodb儲存的區別MySqlNull
- JavaScript return falseJavaScriptFalse
- JavaScript中的+0與-0JavaScript
- Object.create(null) 和 {} 的區別ObjectNull
- 2>/dev/null和>/dev/null 2>&1和2>&1>/dev/null的區別devNull
- JavaScript 中substr與 substring 的區別JavaScript