gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:36:16 24 4
gpt4 key购买 nike

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(obj) 不记录字符串表示形式,它记录对内存中实际 javascript 对象的引用。因此,对该对象所做的任何更改都会反射(reflect)在记录的实例中。

如果您想跟踪所做的渐进式更改,则将对象转换为字符串并打印为 console.log(JSON.stringify(params))

此外,您没有将 params 用作数组,而是将其用作 map 。所以将 params 更改为一个对象 var params = {}

params改成一个对象并使用JSON.stringify记录

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

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

console.log(JSON.stringify(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(JSON.stringify(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;
}

演示:Fiddle

关于JavaScript:console.log() 给出的结果与 alert() 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15528322/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com