相关疑难解决方法(0)

为什么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
查看次数

JavaScript:console.log()给出的结果与alert()不同

console.log()是否应该在JavaScript中调用时打印出变量的值?这是我的假设,但当我在Firefox(使用Firebug)或谷歌Chrome(并使用内置的开发工具)中运行下面的代码时,我似乎得到了数组的"最终"值,而不是当时的数组.如果我使用alert()语句,它们会打印出我期望的内容 - 调用alert()语句时数组的值.

var params = new Array();
var tmp = new Array('apple', 'banana', 'cat');

for (var i=0; i < tmp.length; i++) {
    params[tmp[i]] = [];
}

console.log(params);
/*
SHOWS IN CONSOLE:

- []
+ apple             ["jan", "feb", "mar", "apr"]
+ banana            ["jan", "feb", "mar", "apr"]
+ apple             ["jan", "feb", "mar", "apr"]
*/

alert( print_arr(params) );
/* 
ALERT BOX TEXT:

[apple]:
[banana]:
[cat]:
*/

console.log('===========================================');

var tmp2 = new Array('jan', 'feb', 'mar', 'apr');
for (var i=0; i < tmp.length; i++) …
Run Code Online (Sandbox Code Playgroud)

javascript

4
推荐指数
1
解决办法
1528
查看次数

标签 统计

javascript ×2