Функции - это еще один тип переменных в JavaScript (с некоторыми нюансами, конечно). Создание функции в другой функции изменяет область действия функции так же, как и область действия переменной. Это особенно важно для использования с замыканиями для уменьшения общего загрязнения пространства имен.
Функции, определенные в другой функции, не будут доступны вне функции, если они не были присоединены к объекту, который доступен вне функции:
function foo(doBar)
{
function bar()
{
console.log( 'bar' );
}
function baz()
{
console.log( 'baz' );
}
window.baz = baz;
if ( doBar ) bar();
}
В этом примере функция baz будет доступна для использования после запуска функции foo
, так как она переопределена window.baz
. Функция bar не будет доступна для любого контекста, кроме областей, содержащихся в функции foo
.
как другой пример:
function Fizz(qux)
{
this.buzz = function(){
console.log( qux );
};
}
Функция Fizz
разработана как конструктор, поэтому при запуске она назначает функцию buzz
для вновь созданного объекта.