0
請首先查看這3個代碼塊。修改node.js的外層參數var
碼塊1:
var t1 = function(aaa) {
setTimeout(function(){
a = 'bb';
aaa.push(a);
}, 1000);
}
var t3 = function() {
var aa = new Array;
aa[0] = 'aa';
console.log(aa);
t1(aa);
setTimeout(function(){
console.log(aa);
}, 3000);
}
t3();
輸出: [ 'AA'] [ 'AA', 'B-B']
碼塊2:
var t1 = function(aaa) {
setTimeout(function(){
aaa[1] = 'bb';
}, 1000);
}
var t3 = function() {
var aa = new Array;
aa[0] = 'aa';
console.log(aa);
t1(aa);
setTimeout(function(){
console.log(aa);
}, 3000);
}
t3();
輸出: [ 'AA'] [ 'AA', 'B-B']
代碼塊3:
var t1 = function(aaa) {
setTimeout(function(){
aaa = aaa.concat('bb');
}, 1000);
}
var t3 = function() {
var aa = new Array;
aa[0] = 'aa';
console.log(aa);
t1(aa);
setTimeout(function(){
console.log(aa);
}, 3000);
}
t3();
輸出: [' aa'] ['aa']
問題是代碼塊3'concat'方法無法通過參數修改'aaa'var pass。
'concat','push'和直接修改有什麼區別?