2015-05-18 121 views
1

我是JavaScript新手,并且无法理解以下JavaScript代码。那么你们是否有可能让我了解在回报中嵌套多个功能的目的。这是什么,为什么我们需要它,什么时候应该使用它。返回多个嵌套函数的函数

提前感谢

function create() { 
    var counter = 0; 
    return { 
     increment: function() { 
     counter++; 
     }, 

     print: function() { 
     console.log(counter); 
     } 
    } 
} 
var c = create(); 
c.increment(); 
c.print(); 
+0

Err。这些功能做了不同的事情,所以有不止一个。它的一个*对象*拥有多个返回的函数。 – Quentin

+0

这分隔公共和私人api - 例如。计数器是私人的,并且返回的API是公开的 – amdixon

+0

阅读一些关于JavaScript的不易部分的书籍/教程将有助于理解。 – Regent

回答

0

要理解这一点,你需要了解两个关键概念:

  1. 在JavaScript功能first class objects
  2. closures

create函数返回一个具有两个字段谁的价值实际上是功能和都有包含counter变量封闭的对象。因此c变量被分配了一个对象(它由create函数创建),并且该对象有两个函数,您可以简单地调用这两个函数来引用相同的计数器变量。