Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Javascript function definition [duplicate]

Tags:

javascript

Possible Duplicate:
Do var fn = function() {…} and var fn = function foo() {…} ever differ?

From here

What is the difference between a function expression vs declaration in JavaScript?

I understand that there is a difference between declaring functions and declaring them as variables.

But It's not clear if there is any difference between:

var func_name = function(param, param1){...};

and:

var func_name = function func_name(param, param1){...};

Are they exactly identical?

like image 605
Capstone Avatar asked Oct 07 '22 05:10

Capstone


1 Answers

There are 2 ways of declaring a function in JavaScript.

Function Declaration

Functions declarations are statements so they begin with the function keyword and you have to give the function a name.

These are also parsed before code execution starts, so the code below would not throw an error:

foo(); // "foo" exists because it was created at parse time
function foo() {
}

Function Expressions

Function expressions are - as the name states - expressions. Functions in expressions are treated like any other value (e.g. numbers, strings etc.) and naming them is purely optional.

Functions from expressions are created at runtime, so the code below will throw an expection:

foo(); // "foo" does not exist yes because it will not be created until the line below is executed
var foo = function() {
}

Function names

Functions names are mainly good two things.

  1. Calling function declarations
  2. Accessing the function object from within the function

As stated, in case of expressions the name can be left out; thus, creating a so called anonymous function

So in your example you got two function expressions, one of which is a anonymous function and the other is not.

See also: http://bonsaiden.github.com/JavaScript-Garden/#function.general

like image 75
Ivo Wetzel Avatar answered Oct 10 '22 03:10

Ivo Wetzel