如何在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中将字符串值作为引用传递并在那里进行更改的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PLSQL 过程中将字符串值作为参数传递

如何在Javascript中将字符串修剪为N个字符?

如何在Javascript中将对象作为参数传递

在c#中将引用数组作为参数传递[重复]

如何在 mvc 视图中将剃刀值传递给 jquery 函数

没有指针,我可以在 Python 中将引用作为参数传递吗? [复制]