2013-11-28 2 views
1

У меня такое чувство, что я знаю ответ на этот вопрос, однако, так или иначе, можно просмотреть текущее значение inside через консоль?Переключатель закрытия доступа

var test = (function() { 
    var inside = 0; 
    return function() { 
    inside++; 
    console.log(inside); 
    return inside; 
    } 
})(); 
+0

Умм, разве это не работает нормально, переменная находится в пределах области? – adeneo

+0

Или вы имели в виду вне этого IIFE, так что *** нет ***, это невозможно. – adeneo

+0

Да, вне IIFE, не выполняя его. – KingKongFrog

ответ

0

test() Просто позвоните и console.log напечатает значение.

Ваше закрытие самоисполнено, но ваш внутренний метод только что вернулся, поэтому он никогда не вызывается в вашем примере.

Вы должны использовать:

var test = (function() { 
    var inside = 0; 
    return function() { 
    inside++; 
    console.log(inside); 
    return inside; 
    } 
})(); 

test();//Will print 1 

Так это создаст закрытие и ваше return заявление поставит внутреннюю функцию в переменной test. Таким образом, ваша test стала внутренней функцией. Тогда вам нужно позвонить.

+0

@downvoter не прокомментировал ?? –

+1

Я повышу для вас –

+0

@BelowtheRadar Спасибо человеку. Цените. –

Смежные вопросы