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

Re: [jslint] Re: function() -> function ()

Expand Messages
  • Michael Mikowski
    $0.02: First, the good parts advocates the following form, as it illustrates the true nature of functions: 1. var fnOnClick = function (){ ... }; Others
    Message 1 of 19 , May 2, 2010
    View Source
    • 0 Attachment
      $0.02:

      First, "the good parts" advocates the following form, as it illustrates the true nature of functions:

      1. var fnOnClick = function (){ ... };

      Others advocate you should always name your functions for the benefit of stack traces. I think this is what Mr. Lorton's test code illustrates:

      2. function fnOnClick (){ ... }

      One can combine the two, but its almost certainly bad practice because keeping two names in sync is invites mismatch errors:

      3. var fnOnClick = function fnOnClick (){ ... };

      Method (1) works fine with stack traces in the most current versions of Firebug, so appears to be the best solution for my purposes. IIRC, that was not the case until recently.

      Cheers, Mike






      ________________________________
      From: Michael Lorton <mlorton@...>
      To: jslint_com@yahoogroups.com
      Sent: Sun, May 2, 2010 3:07:45 PM
      Subject: Re: [jslint] Re: function() -> function ()


      Identical? Have you ever heard the expression "not always right, but never in doubt"?

      What should the following show?

      var f = function () {
      };

      function g() {
      }
      alert(f.name == g.name);

      By any ordinary sense "identical", you'd think it would pop-up "true", but lo, f.name is undefined but g.name is "g".

      The function pointed to by f is anonymous in the sense that it does not know its own name, although other functions may have a name for it (indeed, it any function does not appear somewhere in the namespace, it's unreferenced and so, can never be called and will be cleaned up by the GC.

      M.

      ____________ _________ _________ __
      From: "Cheney, Edward A SSG RES USAR USARC" <austin.cheney@ us.army.mil>
      To: jslint_com@yahoogro ups.com
      Sent: Sun, May 2, 2010 2:56:23 PM
      Subject: Re: [jslint] Re: function() -> function ()

      That is not an anonymous function.

      The follow two are identical.

      var f = function () {
      // body
      };

      function f () {
      // body
      }

      In both cases you are assigning a function to a named variable in a given namespace. The biggest difference is the semicolon at the end of the first example, but for your consideration the difference is whether the namespace assignment is implicit to a command or explicitly stated. An anonymous function is a function not assigned to a name. This is an example of an anonymous function:

      errorp.sort( function (a, b) {
      return a - b;
      });

      Austin

      ----- Original Message -----
      From: Douglas Crockford <douglas@crockford. com>
      Date: Saturday, May 1, 2010 23:53
      Subject: [jslint] Re: function() -> function ()
      To: jslint_com@yahoogro ups.com

      > --- In jslint_com@yahoogro ups.com, Rob Richardson < wrote:
      > >
      > > JSLint reports that anonymous functions such as this:
      > >
      > > var f = function(args) {
      > > // body
      > > }
      > >
      > > would be better like this:
      > >
      > > var f = function (args) {
      > > // body
      > > }
      > >
      > > Why is the space between 'function' and '(' preferable?
      >
      > It is for readability. It makes it clearer that you are creating a function and not calling a function.
      >
      > Also, you forgot the semicolon.
      >

      ------------ --------- --------- ------

      Yahoo! Groups Links

      [Non-text portions of this message have been removed]




      [Non-text portions of this message have been removed]
    Your message has been successfully submitted and would be delivered to recipients shortly.