JSON Stringify 崩溃问题

4

我一直在测试一些代码,它接收一个以json格式表示的变量,并应该将其打印出来,但实际上它只打印了一个空数组。

如果我尝试这样做:

console.log(JSON.stringify({first:1,second:2}));

我在打开页面时会出现闪退 (Chrome浏览器会提示"哎呀,崩溃了!")。

我询问了几个人,但他们无法复现这个问题,而我每次打开都会遇到。在FireFox中测试也会导致崩溃。

这是代码:

var timer={first:0,second:0,third:0,fourth:0};
localStorage.setItem('saveTimers', JSON.stringify(timer));

这将在localStorage中设置 []。


1
你发布的代码在我的电脑上没有崩溃。如果我们无法重现问题,那么我们就无法帮助你解决问题。 - Felix Kling
1
在我的Chrome 24.0.1312.57 m上可以运行。 - Steve H.
尝试 {"first":1,"second":2} - Igor Jerosimić
@FelixKling 当执行日志时,如果我尝试记录(timer),它会输出[]。其中timer就是我在问题中提到的那个。 - Thomas
1
但是...如果它输出了什么,那么它就不会崩溃...我现在很困惑。请提供一个http://jsfiddle.net/演示,以复制您的问题,这样猜测太多了。 - Felix Kling
显示剩余7条评论
3个回答

1

我经常运行它时,能够使它崩溃:

for (var i = 0; i < 100000; i ++) {
    var timer={first:0,second:0,third:0,fourth:0};
    localStorage.setItem('saveTimers', JSON.stringify(timer));
}

也许您正在快速地多次运行此代码?解决方法可能是通过 实现节流函数 或使用 Underscore.js 的节流功能 进行限制。

0
根据我的理解,你真正遇到的问题是将东西保存到localStorage中。
这似乎更像是权限问题而不是其他问题。浏览器是否有访问文件系统的权限?浏览器使用的文件夹是否可写?你尝试过重新安装浏览器吗?
这些都是你应该检查的事情。

这是与另一个页面使用相同的代码,那里它可以正确保存数据。 - Thomas

0

如果您正在使用 Chrome 的 beta 或 dev 版本,请仔细检查在稳定版本中是否存在相同的行为,如果没有,则可能是您的问题所在。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接