如何在javascript中将字符串值作为引用传递并在那里进行更改
Posted
技术标签:
【中文标题】如何在javascript中将字符串值作为引用传递并在那里进行更改【英文标题】:How to pass a string value as a reference in javascript and change it over there 【发布时间】:2011-03-15 21:08:22 【问题描述】:如何在 javascript 中通过引用传递字符串值。
我想要这种功能。
//Library.js
function TryAppend(strMain,value)
strMain=strMain+value;
return true;
//pager.aspx
function validate()
str="Checking";
TryAppend(str,"TextBox");
alert(str); //expected result "Checking" TextBox
//result being obtained "Checking"
如何做到这一点。 ?
【问题讨论】:
***.com/questions/1308624/… @haim evgi:我已经看到了这个问题。但是这个问题让我很困惑。我没有得到 ShowMe 是什么,因为它似乎是一个全局变量。而且我不想使用全局变量。strMain
是一个局部变量(在第一个函数的上下文中)。
我刚刚陷入了需要像你一样做的情况(操作一个字符串但返回一个布尔值)。我一直觉得 JavaScript 很可悲,但现在我可以正式宣称它比这更糟糕。
【参考方案1】:
您不能在 JS 中通过引用传递值。您可以创建一个带有函数的对象来为您执行此操作:
function TryAppend(originalValue)
// Holds the value to return
this.Value = originalValue;
// The function joins the two strings
this.Append = function (append)
this.Value+=append;
return true;
然后您可以在任何方法中使用它,如下所示:
function AnyProcedure()
var str = "Checking";
var append = new TryAppend(str);
if (append.Append("TextBox"))
alert(append.Value); // Will give "CheckingTextBox"
每次调用 append 时,Value 字符串都会被追加。即
如果你这样做了:
append.Append(" Foo");
append.Value
将等于 CheckingTextBox Foo。
【讨论】:
你是如何将 myObject 中的 strMain 设为 myObject.strMain 如果这两个函数在不同的js文件上会起作用吗? 是的。只要两个 js 文件都是页面上的引用,它们就可以互相看到。【参考方案2】:您需要返回 String 而不是 true
!!
function TryAppend(strMain,value)
strMain=strMain+value;
return strMain; //you need return the 'String Value' to use in it another method
//pager.aspx
function validate()
str="Checking";
str = TryAppend(str,"TextBox");
alert(str); //expected result "Checking" TextBox
//result being obtained "Checking"
【讨论】:
我有其他目的,因此我无法返回字符串【参考方案3】:在函数 TryAppend 外部创建一个全局变量(例如 gblstrMain),然后在函数内部将其值设置为 strMain。
var gblstrMain;
function TryAppend(strMain,value)
strMain=strMain+value;
gblstrMain = strMain;
return true;
//pager.aspx
function validate()
str="Checking";
TryAppend(str,"TextBox");
str = gblstrMain;
alert(str); //expected result "Checking" TextBox
//result being obtained "Checking"
由于您对 TryAppend 函数中的“return true”有讲究,我们可以通过这个变通方法来实现。
【讨论】:
以上是关于如何在javascript中将字符串值作为引用传递并在那里进行更改的主要内容,如果未能解决你的问题,请参考以下文章