天天看點

你不知道的JavaScript——toString、toNumber、toBoolean

你不知道的JavaScript——toString、toNumber、toBoolean

數組的toString()方法預設把所有的單元字元串化了以後再用逗号,連接配接起來。

JSON 字元串化 工具函數 JSON.stringify(..) 在将 JSON 對象序列化為字元串時也用到了 ToString。

你不知道的JavaScript——toString、toNumber、toBoolean

所有安全的 JSON 值(JSON-safe)都可以使用 JSON.stringify(..) 字元串化。安全的 JSON 值是指能夠呈現為有效 JSON 格式的值。 為了簡單起見,我們來看看什麼是不安全的 JSON 值。undefined、function、symbol (ES6+)和包含循環引用(對象之間互相引用,形成一個無限循環)的對象都不符合 JSON 結構标準,支援 JSON 的語言無法處理它們。

JSON.stringify(..) 在對象中遇到 undefined、function 和 symbol 時會自動将其忽略,在 數組中則會傳回 null(以保證單元位置不變)。

你不知道的JavaScript——toString、toNumber、toBoolean

我們可以向 JSON.stringify(..) 傳遞一個可選參數 replacer,它可以是數組或者函數,用 來指定對象序列化過程中哪些屬性應該被處理,哪些應該被排除,和 toJSON() 很像。 如果 replacer 是一個數組,那麼它必須是一個字元串數組,其中包含序列化要處理的對象 的屬性名稱,除此之外其他的屬性則被忽略。 如果 replacer 是一個函數,它會對對象本身調用一次,然後對對象中的每個屬性各調用 一次,每次傳遞兩個參數,鍵和值。如果要忽略某個鍵就傳回 undefined,否則傳回指定 的值。

代碼執行個體:

你不知道的JavaScript——toString、toNumber、toBoolean

(1) 字元串、數字、布爾值和 null 的 JSON.stringify(..) 規則與 ToString 基本相同。

(2) 如果傳遞給 JSON.stringify(..) 的對象中定義了 toJSON() 方法,那麼該方法會在字元 串化前調用,以便将對象轉換為安全的 JSON 值。

ToNumber:

從 ES5 開始,使用 Object.create(null) 建立的對象 [[Prototype]] 屬性為 null,并且沒 有 valueOf() 和 toString() 方法,是以無法進行強制類型轉換。

ToBoolean:

以下這些是假值:

• undefined

• null

• false

• +0、-0 和 NaN

• ""  //空字元

JavaScript 中的值可以分為以下兩類: (1) 可以被強制類型轉換為 false 的值 (2) 其他(被強制類型轉換為 true 的值)

假值對象:

你不知道的JavaScript——toString、toNumber、toBoolean

真值:

你不知道的JavaScript——toString、toNumber、toBoolean

空數組、空對象和空函數都是真值!!

繼續閱讀