JavaScript 傳參問題
foo(x,y,z){
'use strict';
arguments[0]=10;
console.log(x);?
}
foo(1,2);
輸出x的值不是應(yīng)該為1嗎?課件上的輸出為10是為什么呢?
foo(x,y,z){
'use strict';
arguments[0]=10;
console.log(x);?
}
foo(1,2);
輸出x的值不是應(yīng)該為1嗎?課件上的輸出為10是為什么呢?
2016-12-06
舉報(bào)
2016-12-06
因?yàn)閍rgumnets[0] 就是第一個(gè)參數(shù),即x
2017-03-27
在嚴(yán)格模式下,arguments變成了靜態(tài)副本,和傳入的參數(shù)沒有綁定關(guān)系了,但是如果傳入的參數(shù)是對(duì)象的話,修改arguments屬性是會(huì)對(duì)傳入?yún)?shù)屬性會(huì)影響。比如:
'use strict';
!function(a){
arguments[0].x = 100;
console.log(a.x);//100 ?因?yàn)樵趪?yán)格模式下,如果傳入的參數(shù)是對(duì)象的話,修改arguments屬性是會(huì)對(duì)傳入?yún)?shù)屬性會(huì)影響的
}(x:1);