【问题标题】:How do I pass variables between functions in Javascript?如何在 Javascript 中的函数之间传递变量?
【发布时间】:2011-06-03 18:49:59
【问题描述】:

这里有 2 个最简单形式的函数。我正在使用 jquery。

将 var str 从第一个函数传递到第二个函数的最佳方法是什么?

function a() {
    var str = "first";
};

function b() {
    var new = str + " second";
};

【问题讨论】:

    标签: javascript function variables


    【解决方案1】:

    使用函数参数,像这样:

    function a() {
       var str = "first";
       b(str);
    }
    
    function b(s) {
       var concat = s + " second";
       //do something with concat here...
    }
    

    可以只在作用域链中声明一个更高的变量,但我选择使用参数来限制变量仅访问绝对需要它的上下文。

    哦对了,这不是叫principle of least privilege吗?

    【讨论】:

      【解决方案2】:

      您需要在它们之间传递它,或者从您的示例看来,只需在更高的范围内声明它:

      var str;
      function a(){
        str="first";
      }
      function b(){
        var something = str +" second"; //new is reserved, use another variable name
      }
      

      【讨论】:

      • @Nick 我更喜欢将它们传递出去,而不是让它们公开供其他人修改。
      • @Jacob - 您假设ab 有任何关系,但它可能只是在一个地方是a(),甚至可能从未调用过,然后在另一个地方是b() .
      • 伙计,真的很难决定选择这些答案中的哪一个。鉴于各种用途,两者都非常非常有效,并且鉴于 OP 的稀疏细节,我们无法判断。
      • 模块模式允许您执行此操作,同时仍然保护“str”变量免受外部编辑。共享 var 的快速示例:jsfiddle.net/Ma8Hs
      • @Jacob,从这个非常有限的例子中很难看出 OP 对变量的预期用途。选择是作为参数传递,还是在高范围内声明,甚至为了参数而b.call(new String(str)),实际上取决于具体情况......
      【解决方案3】:

      我用..

       function a(){
       let str = "first";
       localStorage.setItem('value1', `${str}`);}
      
       function b(){
       let str = localStorage.getItem('value1');
       let new = str + " second";}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-06-04
        • 1970-01-01
        • 2020-07-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-31
        相关资源
        最近更新 更多