What difficulty exactly closure resolved in javascript? [closed]

放肆的年华 提交于 2019-12-25 18:34:27

问题


I am working in javaScript from last 3 months, but not able to understand something about closures :

  1. What problem exactly closure resolved in this language ?
  2. When should I use closure ?
  3. Is it related to performance or only case of best practice ?

I read How do JavaScript closures work? , which have pretty good explanation but I am not able to get answes of above questions.


回答1:


Here is a closure example:

var items = ["a","b", "c"];
var displayItem = function (i) {
    return function () {
        alert(items[i]);
    }
}

for (var i = 0; i < items.length; i++) {
    window.setTimeout(displayItem(i), 100);
}
  1. A closure keeps the context information of a function. In this example the closure keeps the number if the counter and the items array. If I wouldn't use the closure the conter would have changed and all alerts would show undefined (var i whould be 3).

  2. You are using closures and you may have not noticed. There are no rules of when to use them. When declaring functions inside other functions you are creating closures. In this example I created a closure with just the data I needed. But the displayItem function has created a closure that allows him to acces to the items array.

  3. Using closures may have performance issues because you're forcing the browser to keep more data in memory. So people doesn't use it for performance and nor as a best practice, it is simply an other tool to solve some problems.



来源:https://stackoverflow.com/questions/17341500/what-difficulty-exactly-closure-resolved-in-javascript

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!