It's bad because of stack traces. It is a big deal.
 
I supported a patch for `var x = function x(){}` for coffeescript a while ago (https://github.com/jashkenas/coffee-script/issues/15#issuecomment-3771331).
 
Later I just got tired of this and stopped using coffeescript completely, but the argument still holds. Anonymous functions are bad for debugging. Smallish callbacks might be fine, but functions in outer scope should always have a name.
 
 
06.12.2013, 23:41, "Mark Hahn" <[email protected]>:
 You're not a bad person if you do `var x = function(){}`. 

That's good because everyone using coffeescript has to use this.  :-)


On Fri, Dec 6, 2013 at 8:51 AM, Isaac Schlueter <[email protected]> wrote:
Named function is better, for hoisting, debugging, and recursion.
 
## hoisting
 
It's hoisted as a function, not as "undefined".
 
```
console.log(typeof unnamed);
console.log(typeof named);
 
var unnamed = function (){};
 
function named() {}
```
 
## debugging
 
The stack traces generated in V8 once upon a time would not infer the name of a function that was declared anonymously.  Now they do, which is great.  But there are other tools out there (debuggers and such) that can trip over such code and show it as the less than useful "(anonymous)" which sucks when there are dozens of them.
 
## recursion (in strict mode)
 
The name of a function is a read-only property and cannot be overwritten or changed, so it's extremely reliable.  It allows you to reference the function without using arguments.callee
 
```
setTimeout(function foo() {
  if (readyYet) doStuff();
  else setTimeout(foo, 100);
}, 100);
```
 
vs:
 
```
var foo = function() {
  if (readyYet) doStuff();
  else setTimeout(foo, 100);
}
setTimeout(foo, 100);
// then later...
foo = 'bar' // boom!
```
 
 
All relatively minor things.  You're not a bad person if you do `var x = function(){}`.  But I personally don't prefer it for those reasons.
 


On Fri, Dec 6, 2013 at 8:33 AM, Reza Razavipour <[email protected]> wrote:
I see both style and trying to understand the differences... Debugging, logging, other plus or minus...
 
Option one:
var zero = function (n){
        return n < 10 ? "0" + n : n;
};
 
Option two:
 
function zero (n){
        return n < 10 ? "0" + n : n;
};
 
What is the "recommended" style and why?

 

--
--
Job Board: http://jobs.nodejs.org/
Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en
 
---
You received this message because you are subscribed to the Google Groups "nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

 

--
--
Job Board: http://jobs.nodejs.org/
Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en
 
---
You received this message because you are subscribed to the Google Groups "nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

 

--
--
Job Board: http://jobs.nodejs.org/
Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en
 
---
You received this message because you are subscribed to the Google Groups "nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

--
--
Job Board: http://jobs.nodejs.org/
Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en
 
---
You received this message because you are subscribed to the Google Groups "nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to