Jam*_*ong 12 javascript google-chrome
打开Chrome开发者工具并输入:
var a = [];console.log(a);a.push(1);console.log(a);
你会期望这会输出类似的东西
[]
[1]
Run Code Online (Sandbox Code Playgroud)
但相反,它输出
[1]
[1]
Run Code Online (Sandbox Code Playgroud)
行为是相同的
var a = [];console.log(a);a[0] = 1;console.log(a);
谁能解释这种行为?
在OS X上运行Chrome.在32位Windows 7上运行相同的行为.
编辑:无论语句是否在同一行,行为都是相同的.我只是将它们放在一行上,以便于测试.
把
var a = [];
console.log(a);
a.push(1);
console.log(a);
Run Code Online (Sandbox Code Playgroud)
在一个文件然后运行它会产生相同的行为.
编辑x 2如果您不想制作要测试的文件, 请参阅:http://jsfiddle.net/9N4A6/.
试试这个:
var a = []; console.log(a.toString()); a.push(1); console.log(a.toString());
Run Code Online (Sandbox Code Playgroud)
我敢打赌,这并不是说评估的顺序很奇怪,而是对象到可打印形式的转换发生在语句全部执行之后,此时 Chrome 准备好实际转储日志。
| 归档时间: |
|
| 查看次数: |
2364 次 |
| 最近记录: |