如何在javascript中将字符串值作为引用传递并在那里进行更改

如何在javascript中将字符串值作为引用传递并在那里进行更改,javascript,jquery,string,pass-by-reference,Javascript,Jquery,String,Pass By Reference,如何在javascript中通过引用传递字符串值 我想要这种功能 //Library.js function TryAppend(strMain,value) { strMain=strMain+value; return true; } //pager.aspx function validate() { str="Checking"; TryAppend(str,"TextBox"); ale

如何在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"    
    }

怎么做

在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时,都会将值字符串追加到。即

如果你当时这样做了:

append.Append(" Foo");

append.Value
将等于CheckingTextBox Foo。

您需要返回字符串,而不是
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"     
    } 
在函数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”很挑剔,我们可以通过这种变通方法来实现。

@haim evgi:我已经看到了这个问题。但这个问题让我很困惑。我没有得到ShowMe是什么,因为它似乎是一个全局变量。我不想使用全局变量。
strMain
是一个局部变量(在第一个函数的上下文中)。我刚刚陷入了一种情况,我需要像您一样操作(操作字符串,但返回布尔值)。我一直觉得JavaScript很可怜,但现在我可以正式宣称它比这糟糕得多。你是如何将strMain作为myObject.strMain放入myObject的。如果两个函数都在不同的js文件上,它会工作吗?是的。只要两个js文件都是页面上的引用,它们就可以看到对方。我还有一些其他用途,因此无法返回字符串