Объявление функции - выражение функции - область - PullRequest
4 голосов
/ 10 ноября 2010

В javascript, в чем разница между объявлением функции и выражением функции с точки зрения области видимости? Объявление функции означает, что мы загрязняем глобальное пространство. То же самое с выражением функции?

Объявление функции

function sum(){
 // logic goes here
}

Выражение функции

var sum = function(){}

Ответы [ 2 ]

9 голосов
/ 10 ноября 2010

Оба эквивалентны по объему. Функция , объявленная внутри другой функции, не будет глобальной. Разница в том, что вы можете использовать объявленную объявленную функцию в любое время (поскольку она подняла до запуска любого кода), функция, назначенная переменной в качестве выражения, только после того, как вы присвоили это.

(function () {

    bar(); // works
    function bar() { }  // is not global

    foo();  // doesn't work
    var foo = function () { };

})();
5 голосов
/ 10 ноября 2010

Что касается загрязнения окружающей области, то оба они эквивалентны.Обратите внимание, что это не обязательно глобальная область - это область, в которой объявлена ​​функция (локальные функции разрешены в других функциях).В вашем примере оба метода вводят переменную (объект функции) с именем sum в локальную область.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...