【发布时间】:2017-09-28 19:19:31
【问题描述】:
我无法理解JSON.parse 的行为。 JSON.parse 应该只适用于字符串。但它似乎适用于只包含一个字符串(甚至单引号)的数组,如果字符串只包含数字。
JSON.parse(['1234']) // => 1234
JSON.parse(['1234as']) // => throws error
JSON.parse(['123', '123']) // => throws error
【问题讨论】:
-
我知道它们都不是有效的 JSON。但是 JSON.parse 应该抛出错误,正如我在第一种情况下所期望的那样,但事实并非如此。
-
请不要参考 w3schools 来理解 JSON。我刚刚审查了它,它在很多方面都非常错误。
-
另外,我认为 Solomonoff 的意思是“这是 JavaScript。您应该期望它符合 ECMAScript 规范,该规范准确解释了当您将非字符串传递给需要字符串的函数时会发生什么"
-
仅供参考:“即使是单引号”在这里也没有相关性。 JavaScript 字符串周围的单引号和双引号与其作为 JSON 的有效性无关。
-
@TravisJ 你对什么是 JavaScript 和什么是 JSON 感到困惑。 JavaScript 字符串周围的引号在您的示例中无关紧要,并且您为两个示例都选择了单引号,完全忽略了这一点。 JavaScript 字符串中的引号 inside 是编码 JSON 的一部分,绝对重要,我从未表示它们不重要。 在 JavaScript 中用于创建字符串文字的引号不会影响该字符串中的字符是否是有效的 JSON;解析
'"foo"'和"\"foo\""没有区别,它们实际上是相同的字符串。
标签: javascript arrays json