所以这是我的代码:
function A(){
var args = Array.prototype.slice.call(arguments);
console.log('before unshift: ', args);
args.unshift(3);
console.log('after unshift:', args);
}
现在,当我打电话时:
A(1, 2, 3)
控制台中的结果是:
在取消之前:[3,1,2,3] 不合时之后:[3,1,2,3]
“在取消之前”应该[1,2,3]虽然......?
......任何人都知道为什么?
---------- 使用:Chrome的开发人员工具 ----------
答案 0 :(得分:1)
控制台,至少在WebKit的Web Inspector中,输出数组的“实时”视图,而不是日志发生时的快照。
要获得其中之一,请执行
console.log('before unshift: ', args.slice());
对于对象(可能包含数组)的情况,这是WebKit bug #35801。
答案 1 :(得分:0)
我认为这是一个错误。以下更明显。
var a = {b:1};
console.log(a);
a.b=2;
日志中的结果是{b:2}。它应该是{b:1}。
数组也是对象。所以它也犯了错误。
但原始值类型并没有包含这个错误。
希望它有所帮助。