【问题标题】:pointer to variable in JavaScriptJavaScript 中指向变量的指针
【发布时间】:2011-12-01 09:41:54
【问题描述】:

有没有办法在 JavaScript 中创建\返回指向变量的指针?
比如,在 PHP 中:

function func() {
    .....
    return &$result;
}

我有一个 JS 函数,例如:

function(...) {
    x=document.getElements..... //x is HTML tag
    if (x.localName=='input') return x.value //String variable
    else if (x.localName=='textarea') return x.innerHTML //String variable
}

使用此函数,我可以从 x 获取数据的副本,但不能更改源。
我也想要改变它的可能性。

谢谢

【问题讨论】:

    标签: javascript dom


    【解决方案1】:

    Hej Dani-Br

    你可以这样做

    function(...) {
     var x = document.getElements..... //x is HTML tag
     if (x.localName=='input') return {
       get: function() { return x.value },
       set: function(v) { x.value = v; }
     };
     else if (x.localName=='textarea') return {
      get: function() { return x.innerHTML },
      set: function(v) { x.innerHTML = v; }
     };
    }
    

    以便调用者可以设置和获取值。 附言。使用 var 声明本地变量

    GL

    【讨论】:

      【解决方案2】:

      这可能不是您正在寻找的东西,但尚未提出的一件事是内部函数可以访问其外部函数的变量:

      function myFunc(){
          var x = "hello";
          myInnerFunc();  
      
          function myInnerFunc (){
              //shows the variable of the outer function
              console.log(x);
          };
      
      };
      

      此外,您可以使用闭包来保存外部函数变量的状态:

      function myFunc2(){
          var x = "hello";
          var timesCalled = 0;
      
          return function (){
              timesCalled++;
              console.log(x + " called: " + timesCalled);
          };
      
      };
      
      var fun = myFunc2();
      
      fun(); //1
      fun(); //2
      fun(); //3
      

      【讨论】:

      • 我不明白,你的意思是什么。它对我有什么帮助?我需要读取和更改 value\innerHTML,如下所示:getval('address')="new value"; var1=getval('address').length;
      【解决方案3】:

      原始类型按值传递。对象通过引用传递。我猜 x.innerHTML 是一个字符串,所以它是按值传递的。

      看看这段代码,它显示了你通过引用传递对象:

      function test(str){
       return str;
      }
      
      var k = { txt : 'foo' },
          n = test(k);
      
      console.log(n.txt);
      k.txt = 'bar';
      console.log(n.txt);
      

      【讨论】:

        【解决方案4】:

        不,您不能返回指向字符串的指针。在 Javascript 中,对象通过引用自动分配和传递,并且原语被复制。所以如果你return x;,那么你可以修改x.innerHTML,但是如果你返回x.innerHTML,字符串会被复制。

        【讨论】:

          猜你喜欢
          • 2010-11-11
          • 2011-08-04
          • 2014-05-18
          • 1970-01-01
          • 2019-09-10
          • 1970-01-01
          • 2014-12-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多