Loading ...
Sorry, an error occurred while loading the content.

Re: Functions and loops

Expand Messages
  • Alan Green
    Hi Although this is really a javascript (not jslint) issue, could you explain why one should make the function valus in a closure. Thanks Alan ... make
    Message 1 of 3 , May 10, 2008
    View Source
    • 0 Attachment
      Hi
      Although this is really a javascript (not jslint) issue, could you
      explain why one should make the function valus in a closure.
      Thanks
      Alan

      --- In jslint_com@yahoogroups.com, "Douglas Crockford" <douglas@...>
      wrote:
      >
      > JSLint will now providing a warning for code like this:
      >
      > function foo(a) {
      > var i;
      > for (i = 0; i < a.length; i += 1) {
      > a[i].onclick = function (e) {
      > alert(i);
      > };
      > }
      > }
      >
      > If you are creating function values inside of a loop, you should
      make
      > them in a closure.
      >
      > function foo(a) {
      > var i;
      > for (i = 0; i < a.length; i += 1) {
      > a[i].onclick = function (i) {
      > return function (e) {
      > alert(i);
      > };
      > }(i);
      > }
      > }
      >
    • Douglas Crockford
      ... The common failure case was shown in the example, attaching event handlers in a loop. If the event handlers are bound to variables that are mutated by the
      Message 2 of 3 , May 11, 2008
      View Source
      • 0 Attachment
        --- In jslint_com@yahoogroups.com, "Alan Green" <alan.green.mail@...>
        wrote:
        >
        > Hi
        > Although this is really a javascript (not jslint) issue, could you
        > explain why one should make the function valus in a closure.
        > Thanks
        > Alan

        The common failure case was shown in the example, attaching event
        handlers in a loop. If the event handlers are bound to variables that
        are mutated by the loop, then they are likely to work incorrectly.
      Your message has been successfully submitted and would be delivered to recipients shortly.