javascript中null是什麼
javascript中null是JS提供的一種特殊值,表示缺少物件;在javascript中可以使用嚴格相等運算子來檢查null值,其檢查語句如“missingObject === null;”。
本文操作環境:windows7系統、javascript1.8.5版,DELL G3電腦。
javascript中null是什麼?
JavaScript中關於null的一切
JavaScript有2種型別:基本型別(string, booleans number, symbol)和物件。
物件是複雜的資料結構,JS 中最簡單的物件是普通物件:一組鍵和關聯值:
let myObject = { name: '前端小智' }
但是在某些情況下無法建立物件。 在這種情況下,JS 提供一個特殊值null
—表示缺少物件。
let myObject = null
1. null的概念
值 null 特指物件的值未設定,它是 JS 基本型別 之一,在布林運算中被認為是falsy。
例如,函式greetObject()建立物件,但是在無法建立物件時也可以返回null:
function greetObject(who) { if (!who) { return null; } return { message: `Hello, ${who}!` }; } greetObject('Eric'); // => { message: 'Hello, Eric!' } greetObject(); // => null
但是,在不帶引數的情況下呼叫函式greetObject() 時,該函式返回null
。 返回nul
l是合理的,因為who
引數沒有值。
2. 如何檢查null
檢查null
值的好方法是使用嚴格相等運算子:
const missingObject = null; const existingObject = { message: 'Hello!' }; missingObject === null; // => true existingObject === null; // => false
missingObject === null
的結果為true
,因為missingObject
變數包含一個null
值。
如果變數包含非空值(例如物件),則表示式existObject === null
的計算結果為false
。
2.1 null 是虛值
null
與false、0、''、undefined、NaN
都是虛值
。如果在條件語句中遇到虛值,那麼 JS 將把虛值強制為false
。
Boolean(null); // => false if (null) { console.log('null is truthy') } else { console.log('null is falsy') }
2.2 typeof null
type null
的結果是什麼
typeof null; // => 'object'
為什麼是'object',typoef null
為object是早期 JS 實現中的一個錯誤。
要使用typeof運算子
檢測null
值。 如前所述,使用嚴格等於運算子myVar === null
。
如果我們想使用typeof
運算子檢查變數是否是物件,還需要排除null
值:
function isObject(object) { return typeof object === 'object' && object !== null; } isObject({ prop: 'Value' }); // => true isObject(15); // => false isObject(null); // => false
3. null 的陷阱
null
經常會在我們認為該變數是物件的情況下意外出現。然後,如果從null中提取屬性,JS 會丟擲一個錯誤。
所以說我麼你想要從一個物件上取屬性的時候,要注意判斷這個物件可能是null
, 要不然的話可能會出錯。
【推薦學習:《》】
4. null 的替代方法
當無法構造物件時,我們通常的做法是返回null
,但是這種做法有缺點。在執行堆疊中出現null
時,剛必須進行檢查。
嘗試避免返回 null
的做法:
- 返回預設物件而不是
null
- 丟擲錯誤而不是返回
null
5. null vs undefined
undefined
是未初始化的變數或物件屬性的值null
和undefined
之間的主要區別是,null
表示丟失的物件,而undefined
表示未初始化的狀態。
提示:文章寫完後,目錄可以自動生成,如何生成可參考右邊的幫助文件
以上就是javascript中null是什麼的詳細內容,更多請關注php中文網其它相關文章!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2558/viewspace-2827277/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- javascript中web worker是什麼JavaScriptWeb
- javascript中閉包是什麼JavaScript
- [譯] JavaScript中的“this”是什麼?JavaScript
- ">/dev/null 2>&1 "是什麼意思devNull
- javascript中window.$是什麼意思JavaScript
- 什麼是JavaScript?JavaScript
- javascript中怎麼判斷某變數是null,undefined,還是不存這個變數 ? 以及變數是array 還是 object 還是 null ?JavaScript變數NullUndefinedObject
- 【譯】JavaScript中純函式是什麼JavaScript函式
- 返回的 json 串 sessionId 為什麼是 nullJSONSessionNull
- Object.create(null) 和 {} 區別是什麼ObjectNull
- 什麼是 RUM JavaScriptJavaScript
- 我天!xx.equals(null) 是什麼騷操作??Null
- javascript函子是什麼JavaScript
- 什麼是JavaScript類庫JavaScript
- JavaScript中的“undefined、null”區別?JavaScriptUndefinedNull
- JavaScript中變數提升是什麼?如何實現?JavaScript變數
- 為什麼if中null要寫在前面?Null
- 為什麼索引無法使用is null和is not null索引Null
- javascript值型別是什麼JavaScript型別
- javascript純函式是什麼JavaScript函式
- 什麼是 JavaScript 世界的 UMDJavaScript
- 什麼是 SAP HANA XS JavaScriptJavaScript
- JavaScript基礎——你真的清楚JavaScript是什麼嗎?JavaScript
- javascript事件捕獲是什麼意思JavaScript事件
- JavaScript的註釋格式是什麼JavaScript
- javascript非同步回撥是什麼JavaScript非同步
- javascript函式節流是什麼JavaScript函式
- [譯] JavaScript:回撥是什麼鬼?JavaScript
- JavaScript中0, "", null, false, undefined的區別JavaScriptNullFalseUndefined
- 你真的知道typeof null的結果為什麼是‘object‘嗎?NullObject
- 在JavaScript中this到底指代什麼?JavaScript
- JavaScript中執行上下文和執行棧是什麼?JavaScript
- JavaScript中的執行上下文和堆疊是什麼JavaScript
- java 中/**是什麼Java
- 為什麼 JavaScript 是 TypeScript 的基礎JavaScriptTypeScript
- 【JavaScript】什麼是擴充套件運算子?JavaScript套件
- JavaScript基礎——回撥(callback)是什麼JavaScript
- javascript中promise有什麼侷限JavaScriptPromise