Javascript array.pop()和console.log()发出奇怪的结果

Javascript array.pop()和console.log()发出奇怪的结果,javascript,Javascript,假设我们有以下代码 var array = [1,2,3,4]; console.log(array); array.pop(); array.pop(); console.log(array); 输出: [1,2] [1,2] 为什么2console.log()相同,为什么第一个显示调用后计算的结果 console.log()函数是否以某种方式或某种方式“延迟” PS:我正在使用Sencha Touch 2.2.1框架,但据我所知,它们并没有覆盖console.log()。我在safari

假设我们有以下代码

var array = [1,2,3,4];
console.log(array);
array.pop();
array.pop();
console.log(array);
输出

[1,2]
[1,2]
为什么2
console.log()
相同,为什么第一个显示调用后计算的结果

console.log()
函数是否以某种方式或某种方式“延迟”


PS:我正在使用Sencha Touch 2.2.1框架,但据我所知,它们并没有覆盖console.log()。我在safari(最新版本)上运行此代码

这是一个众所周知的问题。尽管console.log调用的顺序正确,但日志机制本身是基于引用的,在基于Chrome和webkit的系统中经常会导致这种情况。以下是将其从引用更改为值的工作

var array = [1,2,3,4];
console.log(JSON.stringify(array));
array.pop();
array.pop();
console.log(JSON.stringify(array));

缺陷归档在同一位置:

您使用的是哪种环境?如果您在Nodejs中,那么执行是异步的,因此这是可能的。在浏览器控制台中,这不应发生。事实上,我用Chrome和FF进行了测试,在这两种情况下我都得到了

var array = [1,2,3,4];

console.log(array);

array.pop(); array.pop();

console.log(array);
[1, 2, 3, 4]
[1, 2]
undefined

这是正确的。

您确定这就是您正在运行的代码吗?它在这里给出了预期的输出:我刚刚尝试过,我得到了
[1,2,3,4]
,然后是
[1,2]
你在使用什么JS环境?V8/Chrome按预期输出<代码>[1,2,3,4]和<代码>[1,2]。这不是。也许有其他javascript干扰了这条路?很高兴知道我没有疯,可能是重复的!非常感谢。