我將null傳遞給JSON.parse()並且儘管第一個參數被記錄爲說明它應該是字符串值,但它仍可用於提供null
。JSON.parse允許爲空作爲值
即使文檔聲明爲字符串,並且這可以在多個瀏覽器中安全可靠地使用,它怎麼會不會拋出錯誤?
我將null傳遞給JSON.parse()並且儘管第一個參數被記錄爲說明它應該是字符串值,但它仍可用於提供null
。JSON.parse允許爲空作爲值
即使文檔聲明爲字符串,並且這可以在多個瀏覽器中安全可靠地使用,它怎麼會不會拋出錯誤?
的ECMAScript spec說爲JSON.parse
第一步:
- 讓
JText
是ToString(text)
。
這意味着它會投下什麼說法它給一個字符串,null
強制轉換爲"null"
,這是null
有效的JSON表示。
請注意,單個這樣的JSON基元應該不是有效,JSON字符串應該包裝在對象或數組中。但解析器傳統上一直不嚴格,部分原因是它使我的實現更簡單。
- 讓JText是的ToString(文本)。
它不要求第一個參數是一個字符串,它試圖將其轉換爲字符串。
"" + null
會給你"null"
這是一個包含有效JSON的字符串。
空:回到 「空」。
檢查下面的答案 https://stackoverflow.com/questions/21120999/representing-null-in-json –
我覺得這個問題是不同的,因爲它談論在JSON對象內使用'null'。 JSON.stringify已經結束了字符串的JSON對象。我直接向我的'JSON.parse()'中直接拋出'null'。 –
我假設'parse'可能會在內部將給定值轉換爲一個字符串,該字符串將是'「null」'',這是一個有效的JSON值。 – deceze