【问题标题】:Passing arguments to a function inside another function将参数传递给另一个函数内的函数
【发布时间】:2016-10-13 05:53:30
【问题描述】:

这里有两个 sn-ps 代码。他们做同样的事情。我的问题是哪一个代表最佳实践,其背后的原因是什么。非常感谢你!


function foo(x){
    bar();
    function bar(){
       var y = x + 1;
    }
}

function foo(x){
    bar(x);
    function bar(x){
       var y = x + 1;
    }
}

【问题讨论】:

  • 你排除了什么??
  • 这在很大程度上取决于函数的作用。有时为内部函数使用参数是有意义的;其他时候则不然。如果您发布实际功能,我可以更有效地帮助您。

标签: javascript function arguments


【解决方案1】:

第二个 sn-p 代码更好,因为它提供了更多的代码可重用性和变量和函数之间的低耦合。除了第一个代码 sn-p 您还可以使用下面的代码,但您自己已经避免了,因为这不是一个好方法。就性能而言,第一个代码更好,因为您没有将任何参数传递给 bar 函数,并且每当您将参数传递给函数时,它都会消耗 CPU 周期和资源。

var x=10;
.....
function foo(){
    bar();
    function bar(){
       var y = x + 1;
    }
}

【讨论】:

  • 谢谢,这就是我一直在寻找的答案——可重用性 vs 性能!
【解决方案2】:

您给出的示例非常不适合您的问题。在您的示例中,您甚至可以这样做:

function foo(x){
    var y = x + 1;
}

但是看起来你的函数真的什么都做不了,这甚至让我们更难了。为了回答你的问题,这是情境;或者它取决于 问题

【讨论】:

    【解决方案3】:

    我想说最佳实践是读者更容易推理的东西,所以对于这个简单的例子,它是这样的:

    function bar(x) {
        var y = x + 1;
    }
    
    function foo(x) {
        bar(x);
    }
    

    【讨论】:

      【解决方案4】:

      它们几乎相同,而且肯定不会影响您的应用程序速度,除非您正在处理一个非常庞大的程序。

      但是,为了代码的可读性,您应该使用第二个选项。

      此外,在某些语言(如 Java)中,您可以编写和使用静态函数 -> 例如:foo.bar(x),您将无法这样编写它。因此,如果您打算学习更多并写得更好,请使用第二个。

      【讨论】: