Есть некоторые вещи, которые вы можете сделать с помощью выражения функции, которые вы не можете сделать с помощью объявления.
оно может быть немедленно вызвано, а возвращаемое значение сохранено в переменной
если вы не находитесь в глобальном пространстве имен, вы можете исключить ключевое слово var
, чтобы создать глобальное
EDIT:
Вот пример немедленного вызова.Он возвращает функцию в переменную myFunctionName
, которая имеет доступ к переменным и параметру, находящимся в области действия в немедленно вызываемой функции.
var myFunctionName = function( v ) {
// do something with "v" and some scoped variables
// return a function that has access to the scoped variables
return function() {
// this function does something with the scoped variables
};
}( 'someVal' );
// now this function is the only one that has access
// to the variables that were scoped in the outer expression.
myFunctionName();
Вот пример, где функция поддерживает числовое значение.Вы можете многократно вызывать функцию, давая ей номер для добавления к счетчику.Он всегда будет ссылаться на текущее значение, поэтому каждый вызов является кумулятивным.
Пример: http://jsfiddle.net/5uuLa/1/
var counter = function( value ) {
return function( addValue ) {
value += ~~addValue;
return value;
};
}( 10 ); // initialize with a value
// each call builds on the result of the previous
console.log( counter( 2 ) ); // 12
console.log( counter( 5 ) ); // 17
console.log( counter( 3 ) ); // 20
console.log( counter( 7 ) ); // 27
console.log( counter( 1 ) ); // 28