Javascript参数对象未按预期工作
当我设置Javascript参数对象未按预期工作,javascript,arguments,Javascript,Arguments,当我设置arumings[0]=chuie时;参数[1]=luke它打印: 丘巴卡 丘巴卡 汉·索洛 丘巴卡 我所期望的是: 丘巴卡 卢克·天行者 汉·索洛 丘巴卡 功能星球大战(卢克、达斯、汉、丘伊){ 参数[0]=丘伊; 论点[1]=卢克; 写入(参数[0]+“”); 写(参数[1]+“”); 写(参数[2]+“”); 写(参数[3]+“”); } 星球大战(“卢克·天行者”、“达斯·维德”、“汉·索洛”、“丘巴卡”)您正在使用chuwie为luke变量赋值,因为参数[0]是luke的引
arumings[0]=chuie时;参数[1]=luke
它打印:
丘巴卡
丘巴卡
汉·索洛
丘巴卡
我所期望的是:
丘巴卡
卢克·天行者
汉·索洛
丘巴卡
功能星球大战(卢克、达斯、汉、丘伊){
参数[0]=丘伊;
论点[1]=卢克;
写入(参数[0]+“
”);
写(参数[1]+“
”);
写(参数[2]+“
”);
写(参数[3]+“
”);
}
星球大战(“卢克·天行者”、“达斯·维德”、“汉·索洛”、“丘巴卡”)
您正在使用chuwie
为luke
变量赋值,因为参数[0]
是luke
的引用
所以在arguments[0]=chuie
之后,发生的是luke=chuie
解决办法可以是:
var tempLuke = argument[0];
arguments[0] = chewie;
arguments[1] = tempLuke;
由于
参数[0]
是对luke
的引用,因此您将luke
变量赋值为chuwie
所以在arguments[0]=chuie
之后,发生的是luke=chuie
解决方案可以是:
var tempLuke = argument[0];
arguments[0] = chewie;
arguments[1] = tempLuke;
更改
参数
对象时,也会更改函数的参数变量,因为它包含对变量的引用
概括
1) 参数[0]=chuwie代码>
在这里,您还将变量luke
设置为chuwie('chuwbacca')
2) 论点[1]=卢克
在这里,卢克在第一步就已经成为了“丘巴卡”。因此,您正在使参数dart
也成为“chewbacca”。当您更改arguments
对象时,您也会更改函数的参数变量,因为它包含对变量的引用
概括
1) 参数[0]=chuwie代码>
在这里,您还将变量luke
设置为chuwie('chuwbacca')
2) 论点[1]=卢克
在这里,卢克在第一步就已经成为了“丘巴卡”。因此,您正在使参数dart
也成为“chewbacca”。在松散模式下,参数中的条目链接到指定参数。因此,通过设置参数[0]
,您正在设置卢克。
字面上,行参数[0]=chuie代码>和luke=chuie代码>可以互换。因此,稍后当您使用luke
中的arguments[1]
时,您使用的是更新后的值(chuie
)
严格模式删除此神奇链接:
“严格使用”;
功能星球大战(卢克、达斯、汉、丘伊){
参数[0]=丘伊;
论点[1]=卢克;
log(参数[0]);
log(参数[1]);
log(参数[2]);
log(参数[3]);
}
星球大战(“卢克·天行者”、“达斯·维德”、“汉·索洛”、“丘巴卡”)代码>在松散模式下,参数
中的条目链接到命名参数。因此,通过设置参数[0]
,您正在设置卢克。
字面上,行参数[0]=chuie代码>和luke=chuie代码>可以互换。因此,稍后当您使用luke
中的arguments[1]
时,您使用的是更新后的值(chuie
)
严格模式删除此神奇链接:
“严格使用”;
功能星球大战(卢克、达斯、汉、丘伊){
参数[0]=丘伊;
论点[1]=卢克;
log(参数[0]);
log(参数[1]);
log(参数[2]);
log(参数[3]);
}
星球大战(“卢克·天行者”、“达斯·维德”、“汉·索洛”、“丘巴卡”)代码>不应手动为参数赋值。在几乎所有情况下,不再需要在ES2015或更高版本中使用arguments
对象,因为arguments[0]
和luke
是完全相同的东西。不是两个引用同一个值,但基本上都是同一个变量。如果更改参数[0]
,luke
也将更改;反之亦然。知识到此为止;没有理由解释它,甚至没有理由使用它。听@naomik,尽量避免arguments
对象。不应手动将值分配给arguments
。在几乎所有情况下,不再需要在ES2015或更高版本中使用arguments
对象,因为arguments[0]
和luke
是完全相同的东西。不是两个引用同一个值,但基本上都是同一个变量。如果更改参数[0]
,luke
也将更改;反之亦然。知识到此为止;没有理由解释它,甚至没有理由使用它。听@naomik,尽量避免使用参数
对象。