将功能嵌套在彼此之间是不好的做法吗?

时间:2017-01-08 17:14:01

标签: javascript jquery function nested

在嵌套函数中嵌套函数内嵌函数有什么缺点...

以下是一个例子:

JS / jQuery的:

function one() {

    // do something

    function two() {

        // do something

        function three() {

            // do something

            function four() {

                // do something

            }

        }

    }
}

2 个答案:

答案 0 :(得分:2)

声明嵌套函数的一个disadvantage是每次调用parent函数时都会在函数的环境中创建它。

理论上,如果频繁调用decrease函数,则parent性能可能会有所提升。

但是,javascript中使用了嵌套函数。例如,closures非常强大,所有JavaScript开发人员都应该理解。

详细了解closureshere.

答案 1 :(得分:2)

嵌套函数可以访问其父作用域,因此您可以从深层嵌套函数更改父作用域中的状态。例如

function one() {
  var a = 1;
  two(); // a = 4

  function two() {  
    var b = 2;
    three(); // b = 4

    function three() {
      var c = 3;
      four(); // c = 4

      function four() {
        a = 4;
        b = 4;
        c = 4;
      }
    }  
  }
}

一方面,这非常强大。另一方面,它很容易变得草率而且难以推理,因为你必须确保任何子函数都没有改变任何父函数的值。

如果坚持不嵌套函数,则不必担心函数内部的状态是从嵌套函数内部更改的。

function one() {
  var a = 1;
  two(); // a = 1
}

function two() {  
  var b = 2;
  three(); // b = 2
}

function three() {
  var c = 3;
  four(); // c = 3
}  

function four() {
  a = 4;
  b = 4;
  c = 4;
}