开发者

What are the benefits of a closure, and when are they typically used?

开发者 https://www.devze.com 2023-01-23 20:03 出处:网络
I\'m a web developer, but lots of folks are looking for slightly more advanced skills and understanding closures seems to be at the forefront of this.

I'm a web developer, but lots of folks are looking for slightly more advanced skills and understanding closures seems to be at the forefront of this.

I get the whole "execution context creating a reference to a variable that doesnt ever get destroyed" thing, but really, is this some sort of private 开发者_如何学编程or static variable implementation in JavaScript?


They can be good for lots of things, for example, visibility (like private members in traditional OO).

var count = function(num) {

   return function(add) {
       add = add || 1;
       num += add;
       return num;
   }

}

See it.

My count() can be seeded with a number. When I assign a variable to the return, I can call it with an optional number to add to the internal num (an argument originally, but still part of the scope of the returned function).

This is a pretty good overview.

See also on Stack Overflow

  • What is a practical use for a closure in JavaScript?
  • How does a javascript closure work ?
  • When actually is a closure created?
  • more...


A closure is a code block with bound variables - it "catches" its variables from their outer context - but it is independent from that same context.

A practical use in javascript is when defining events or callbacks - you declare a closure to be executed on the click of a button, for instance, but this closure can reference variables declared on the caller scope.

jQuery uses closures a lot - btw this is a good link for understanding closures for jQuery: A Graphical Explanation Of Javascript Closures In A jQuery Context.

Hope it helps.


There are many JS books available, but you really should grab a copy of David Flanagan's JavaScript: The Definitive Guide if you really want to learn this (still the best JS reference IMHO). Read the chapter on closures and you'll get a lot more in-depth knowledge than anyone can give you in a reply here.

0

精彩评论

暂无评论...
验证码 换一张
取 消