JSON.parse允许null为值

时间:2017-09-28 08:29:44

标签: javascript json

我将null传递给JSON.parse(),虽然记录了第一个参数,说它应该是一个字符串值,但它仍然可以提供null

即使文档声明这是针对字符串的,并且这可以安全可靠地用于多个浏览器,为什么这不会引发错误?

2 个答案:

答案 0 :(得分:3)

ECMAScript spec表示JSON.parse的第一步:

  
      
  1. JText成为ToString(text)
  2.   

意味着它将转换为字符串赋予的任何参数,并null强制转换为"null",这是null的有效JSON表示。

请注意,单个此类JSON原语不应有效,JSON字符串应包装在对象或数组中。但传统上解析器一直都很松懈,部分原因在于它使我的实现变得更简单。

答案 1 :(得分:-1)

请参阅The external annotation on List

  
      
  1. 让JText为ToString(文本)。
  2.   

它不要求第一个参数是字符串,它会尝试将其转换为字符串。

"null"将为您提供old = Number(value),这是一个包含有效JSON的字符串。

这是the specification

  

Null:返回“null”。