YAQ关于在JavaScript中通过引用传递变量
我在JavaScript中找到的通过引用指定变量的所有答案都是使用数组或对象,它们通过引用传递。但这并不能解决我的问题,因为它只是通过引用传递的外部数组或对象,而不是它包含的值YAQ关于在JavaScript中通过引用传递变量,javascript,pass-by-reference,Javascript,Pass By Reference,我在JavaScript中找到的通过引用指定变量的所有答案都是使用数组或对象,它们通过引用传递。但这并不能解决我的问题,因为它只是通过引用传递的外部数组或对象,而不是它包含的值 // This fragment fails for the reason given below var Str=''; var ArrStr=[Str]; Str+='begin '; Debug(); Str+='end '; function Debug() { ArrStr[0]+='debug i
// This fragment fails for the reason given below
var Str='';
var ArrStr=[Str];
Str+='begin ';
Debug();
Str+='end ';
function Debug()
{
ArrStr[0]+='debug info ';
}
这种简单的方法失败了,因为Debug()只修改ArrStr[0]
的内容,它是Str
的一个单独变量
如果我改变Str+='begin'代码>到ArrStr[0]+='begin'我认为,这解决了我的问题,因为它执行显式间接寻址,但代价是降低程序的简单性或清晰度,无论它在哪里附加到可能被调试的字符串
因此,显然,无法通过全局变量指定Debug()应将其输出放在何处(我拒绝使用字符串和eval
指定变量)。如何更改程序,使Debug()将其输出附加到变量Str
,该变量在程序的不同部分可能不同?我希望Debug()可以在任何地方工作,即使使用不同的变量代替Str
有没有办法通过引用来模拟真实的,或者我必须放弃并找到一种不那么优雅的方法来完成这项任务?基于几乎一天的实验,我决定我提出的用JavaScript实现引用的方法毕竟非常有效。如果希望通过引用自由传递变量a,只需将其放入长度为1的数组中:var a=['Initial Value']代码>。要传递它,只需传递A。要引用它进行获取或设置,只需引用A[0]。您甚至可以将A设置为null,以指示尚未设置名称的by-reference值
我希望这有助于其他人尝试通过引用传递数字和字符串等简单值