2010-11-10 4 views
4

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

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

function sum(){ 
// logic goes here 
} 

выражение Функции

var sum = function(){} 
+0

http://stackoverflow.com/questions/336859/javascript-var-functionname-function-vs-function-functionname и http://stackoverflow.com/questions/1013385/what-is-the- разница между ними-а-функции выражение-против-декларации-в-JavaScript – Phil

ответ

5

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

9

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

(function() { 

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

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

})(); 
Смежные вопросы