【发布时间】:2013-03-20 15:47:30
【问题描述】:
console.log() 是否应该在 JavaScript 中调用变量时打印出变量的值?这是我的假设,但是当我在 Firefox(使用 Firebug)或 Google 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++) {
for (var j=0; j < tmp2.length; j++) {
params[tmp[i]].push(tmp2[j]);
}
}
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]:jan,feb,mar,apr
[banana]:jan,feb,mar,apr
[cat]:jan,feb,mar,apr
*/
function print_arr(arr) {
var str = '';
for (var k in arr) {
str += '[' + k + ']:' + arr[k].toString() + "\n";
}
return str;
}
【问题讨论】:
-
控制台记录对象,因此对对象所做的任何更改都会反映在记录的对象中
-
console.log(JSON.stringify(yourObj));- 试试吧。 -
为什么要创建一个数组并用属性而不是值填充它?为什么不使用 Object 呢?
-
对您的编码风格的一个小评论:不要使用新的
Array(a,b,c),而是使用[a,b,c]。眼睛更容易,标识符不必查找。
标签: javascript