Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么JSON解析在以“开始”的字符串的第一个字符上没有失败;t";?_Javascript_Json - Fatal编程技术网

Javascript 为什么JSON解析在以“开始”的字符串的第一个字符上没有失败;t";?

Javascript 为什么JSON解析在以“开始”的字符串的第一个字符上没有失败;t";?,javascript,json,Javascript,Json,我会尽快澄清我的意思 JSON.parse("te") VM297:1 Uncaught SyntaxError: Unexpected token e in JSON at position 1 at JSON.parse (<anonymous>) at <anonymous>:1:6 JSON.parse("ce") VM342:1 Uncaught SyntaxError: Unexpected token c in JSON at positi

我会尽快澄清我的意思

JSON.parse("te")
VM297:1 Uncaught SyntaxError: Unexpected token e in JSON at position 1
    at JSON.parse (<anonymous>)
    at <anonymous>:1:6

JSON.parse("ce")
VM342:1 Uncaught SyntaxError: Unexpected token c in JSON at position 0
    at JSON.parse (<anonymous>)
    at <anonymous>:1:6
JSON.parse(“te”)
VM297:1未捕获的语法错误:JSON中位置1处的意外标记e
在JSON.parse()处
时间:1:6
JSON.parse(“ce”)
VM342:1未捕获的语法错误:JSON中位于位置0的意外标记c
在JSON.parse()处
时间:1:6

如您所见,字符串“ce”在位置0处解析失败,字符串“te”在位置1处解析失败。这意味着解析器认为存在以字符“t”开头的合法JSON。有人知道那会是什么吗?或者为什么解析器在t后面的字符失败

关键字
true
以“t”开头。因此,直到解析器看到“e”,它才知道语法是无效的

这个错误有点令人着迷,因为它将“e”报告为令牌,这不是我实现JSON解析器的方式。这似乎是Node/V8的问题,因为Firefox拒绝从位置1(“t”)开始的整个令牌


您可以通过尝试
JSON.parse(“nulp”)
再次检查这个答案;“p”上的节点错误。

完整的JSON语法如下:

JSON = null
    or true or false
    or JSONNumber
    or JSONString
    or JSONObject
    or JSONArray
因此,编译器将处理
t
n
f
作为JSON字符串的有效开始。
有关更多信息,请查看:

那是什么环境?@Pointy V8specific@YuryTarabanko是的,所以看起来我认为他们认为这是一个词法标记。@没错,这可能只是错误消息的措辞方式。Firefox的行为不符合fwiw.@chaospandio,或者他们可能使用PEG解析器,这可能有点奇怪,但JSON非常简单,可能他们发现这会更快。