Замыкания и 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, время: 04:40. |