ant*_*upe 5 javascript google-chrome google-chrome-devtools
Chrome的js控制台在删除值之前显示一个删除值的数组.为什么?
var list=[];
list.push("one");
list.push("two");
list.push("three");
console.log(list); //["two", "three", undefined × 1]
$("#output").append(JSON.stringify(list));//["one","two","three"]
list.shift();
$("#output").append($("<br>"));
console.log(list); //["two", "three"]
$("#output").append(JSON.stringify(list));//["two","three"]
Run Code Online (Sandbox Code Playgroud)
小智 6
在Chrome console.log中"延迟"; 在这种情况下到本程序结束我相信.
也就是说,在Chrome中,console.log 不会立即对输入对象进行字符串化,而是"稍后"执行字符串化(在此情况下对象已被修改)但在实际显示结果之前,
console.log(JSON.stringify(list)) 会显示预期的结果.
据报道,这可以追溯到Chrome 5(错误修复目标是Mstone-22,而不是Chrome 20/21?),并且已经在webkit基础中添加了修复:
截至今天,将对象(数组)转储到控制台将导致在控制台对象扩展(即懒惰)时读取对象的属性.这意味着在使用控制台进行调整时转储相同的对象将很难调试.
此更改开始在记录时生成对象/数组的缩写预览,并将此信息传递到前端.这只发生在前端已经打开时,它只适用于console.log(),而不适用于实时控制台交互.
| 归档时间: |
|
| 查看次数: |
111 次 |
| 最近记录: |