I just bought the newest version of "JavaScript: The Definitive Guide" and already have a question. :D
Are the following lines semantically the same:
var square = function(n){
return n * n;
};
and
function square(n){
return n * n;
}
If yes, what are the advantages/disadvantages of using either of them?
Thanks for your help!
-
possible duplicate of What is the difference between a function expression vs declaration in Javascript?Felix Kling– Felix Kling2011年05月26日 14:13:57 +00:00Commented May 26, 2011 at 14:13
-
Thanks for pointing out, Felix. The differences between these two approaches are now clear.aydio– aydio2011年05月27日 11:39:44 +00:00Commented May 27, 2011 at 11:39
3 Answers 3
Check this out:
a(); // prints 'A'
function a(){
console.log('A');
};
and this:
b(); // throws error. b is not a function
var b = function() {
console.log('B');
};
Did you notice the difference?
1 Comment
Yes, they do the exact same thing.
The main advantage of the first approach is that it gives you a reference to that function so that you could pass it to another function or attach it to an object if you need to.
2 Comments
Difference is that in the first solution, you can do that :
var square = function(n){
return n * n;
};
// some code
square = function(n) { return n*n*n; }
you have reference to a function. On the other solution, the function is statically declared.
Disclaimer: need JS guru to tell me if I'm wrong =).
2 Comments
n*n*n for a square method is silly, but it is just for the example.