Firefox中JSON.parse()的奇怪行为

时间:2016-05-19 15:50:39

标签: javascript

我遇到了JSON.parse()的问题,即它始终返回“不可用”的结果。这是一个简单的测试用例:

<html>
  <head>
    <title>Test</title>
    <script>
      var lnkArr=JSON.parse('{}');
      console.log('lnkArr: ', lnkArr);
    </script>
  </head>
  <body></body>
</html>

这会产生:lnkArr: <unavailable>。无论我解析什么,结果都是一样的。没有相关的错误,相同的代码在Chrome中运行良好。有什么东西我在这里做错了或者这是一个错误吗?

另外,如果有人能指出我确切的“不可用”的信息意味着我真的很感激它,因为我能找到的关于范围的一切都是关于范围而没有任何关于范围变化的说法。

更新

我正在使用Firefox Developer Edition 48.0a2(2016-05-19)。由Martin联系起来的小提琴产生了同样的结果。

1 个答案:

答案 0 :(得分:2)

回答评论:

这是一个控制台有时与实际情况不符的问题。

特别是Chrome,运行控制台是一个与JavaScript代码不同的线程,因此对象可以在调用a1的时间和结果之间进行更改 - 甚至是垃圾回收显示。

使用JSON.stringify可以&#34;复制&#34;该对象,以便它将正确记录:

trait Foo {
  def a1: older.A1
}

那就是说,在那个时刻,console.log实际上是一个对象。它在控制台中显示为一个字符串,因为这是我们要求的 - 但这只是为了显示目的。

&#13;
&#13;
console.log('lnkArr: ', JSON.stringify(lnkArr));
&#13;
&#13;
&#13;