Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
YAQ关于在JavaScript中通过引用传递变量_Javascript_Pass By Reference - Fatal编程技术网

YAQ关于在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

我在JavaScript中找到的通过引用指定变量的所有答案都是使用数组或对象,它们通过引用传递。但这并不能解决我的问题,因为它只是通过引用传递的外部数组或对象,而不是它包含的值

// 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值

我希望这有助于其他人尝试通过引用传递数字和字符串等简单值