相关疑难解决方法(0)

Chrome的JavaScript控制台是否懒于评估数组?

我将从代码开始:

var s = ["hi"];
console.log(s);
s[0] = "bye";
console.log(s);
Run Code Online (Sandbox Code Playgroud)

简单吧?对此,Firebug说:

["hi"]
["bye"]
Run Code Online (Sandbox Code Playgroud)

很棒,但Chrome的JavaScript控制台(7.0.517.41 beta)说:

["bye"]
["bye"]
Run Code Online (Sandbox Code Playgroud)

我做错了什么,或者Chrome的JavaScript控制台在评估我的阵列方面特别懒惰?

在此输入图像描述

javascript arrays console logging google-chrome

116
推荐指数
4
解决办法
2万
查看次数

为什么javascript对象在Chrome,Firefox,Safari的控制台中显示不同的值?

可能重复:
Chrome的JavaScript控制台是否懒于评估数组?

考虑这个javascript:

var foo = {bar : 1111};
console.log(foo);
console.log(foo.bar);

foo.bar = 2222;
console.log(foo);
console.log(foo.bar);
Run Code Online (Sandbox Code Playgroud)

在Firefox的firebug中,这显示了我的预期:

Object { bar=1111}
1111

Object { bar=2222}
2222
Run Code Online (Sandbox Code Playgroud)

但是,在Safari和Chrome的控制台中,它显示:

Object { bar=2222}
1111

Object { bar=2222}
2222
Run Code Online (Sandbox Code Playgroud)

换句话说,对象在打印转储时在控制台中显示错误的属性,但是如果打印特定属性则显示正确的值.

这是浏览器的怪癖吗?或者我缺少面向对象的javascript的一个基本方面?

javascript

14
推荐指数
1
解决办法
7762
查看次数

Chrome开发者工具中的奇怪的console.log行为

可能重复:
Chrome的JavaScript控制台是否懒于评估数组?

打开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/.

javascript google-chrome

12
推荐指数
1
解决办法
2364
查看次数

标签 统计

javascript ×3

google-chrome ×2

arrays ×1

console ×1

logging ×1