Замыкания и Function-Expression
Читаю две статьи: http://javascript.ru/basic/closure
и Function-Expression в новичковом вопросе С одной стороны (статья по замыканиям):
function outer() {
var outerVar;
var func = function() {
}
return func;
}
// функция func() доступна вне функции outer().
С другой:
var a = (function () {
// "private"
var b = 10;
function c() { }
// интерфейс наружу опущен
};
})();
// Однако, ни "b", ни "c" не доступны посредством "а" напрямую.
И чему верить? Чего я не понимаю? |
Цитата:
function outer() {
var outerVar;
var func = function () {
};
return func;
}
*!*
var myFunc = outer();
*/!*
func будет доступна по ссылке myFunc, и к outerVar можно будет получить доступ только внутри func
function outer() {
var outerVar = 1;
return function () {
return typeof outerVar;
};
}
var myFunc = outer();
alert([typeof outerVar, myFunc()]);
Еще http://dmitrysoshnikov.com/ecmascrip...er-6-closures/ почитайте, ну остальные статьи там. |
В вашем коде переменной а присваивается не функция, а результат её вызова, а так как функция ничего конкретного не возвращает, результатом будет underfined.
var a = (function () {
// "private"
var b = 10;
function c() { //} - это была лишняя скобка
// интерфейс наружу опущен
};
})();
alert(a)
var a = (function () {
var b = 10;
return function c() {alert(b)};
})();
a();
|
Arris, думаю, для начала Вам нужно определиться с тем, что такое замыкания и от этого плясать дальше.
|
| Часовой пояс GMT +3, время: 23:14. |