array.push
首先,这与JSON无关。:-)
您的代码首先不会输出117,118
等。这就是 Chrome 为您显示它的方式。您似乎遇到了与其中没有空格的行相关的 Chrome 中的一些内部限制或错误。在 Firefox 中,它不会那样做。
从根本上说,您的代码会重复输出数组而没有任何换行符。所以在你的循环的第一次迭代中,你输出
1
...没有换行符。在第二次迭代中,你输出1,2
没有换行,所以我们有:
11,2
...第三个,你输出1,2,3
:
11,21,2,3
...依此类推,直到您排长队为止。由于某种原因,Chrome 最终会丢失它并显示一堆空格,然后是文本,有点混乱。
您可能希望通过移动document.write
语句在最后输出最终数组。或者,您可以使用document.writeln
which 将在每行的末尾放置一个换行符(这似乎让 Chrome 很高兴;但输出对于人类来说仍然很难阅读,因为当然 HTML 中的换行符只会导致空格,而不是实际的换行符)。
但到目前为止,最好使用比 更现代的东西document.write
,例如(例如)附加到:http document.body
: //jsfiddle.net/CLmYW/
var value = [];
for (var i = 1; i <= 300; i++) {
value.push(i);
display(value);
}
function display(msg) {
var p = document.createElement('p');
p.innerHTML = msg;
document.body.appendChild(p);
}
...很好地输出
1
1,2
1,2,3
1,2,3,4
1,2,3,4,5
1,2,3,4,5,6
1,2,3,4,5,6,7
1,2,3,4,5,6,7,8
1,2,3,4,5,6,7,8,9
...等等。
console.log
在处理事物时仅查看事物的状态也非常有用。所有最新的主流浏览器的开发工具都支持它。
另请注意,我已删除JSON.stringify
; 所做的只是返回索引计数器的字符串版本,并且在输出中,数组中的数字是真正的数字还是字符串并不重要。