Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Когда допустим такой вызов: Funct()(); (https://javascript.ru/forum/misc/24907-kogda-dopustim-takojj-vyzov-funct-%3B.html)

lisawow 18.01.2012 17:50

Когда допустим такой вызов: Funct()();
 
function Funct() {
  var a = 2;
  var func = function() { alert(a); };
 return func; 
}

Funct()();


Почему вызов просто с Funct(); (без ещё одних скобок) не работает?

9xakep 18.01.2012 18:06

lisawow,
наверное потому что вы возвращаете ф-ию

poorking 18.01.2012 18:08

Этот метод возвращает другой метод. Если вызовете просто Funct(), то все сработает, но вы получите, не то, что, наверняка ожидали.

function Funct() {
  var a = 2;
  var func = function() { alert(a); };
 return func; 
}

Funct()();

//Аналогично
var method = Funct();
method();

9xakep 18.01.2012 18:35

Ой-да...тупанул что-то :-E
Если вы напишете просто:
Funct(), то все будет работать...но как уже сказали не так как вы хотите. Тогда вам вернется лишь значение самой переменной(но не ф-ия).
<script>
function Funct() {
  var a = 2;
  var func = function() { alert(a); };
 return func; 
}
alert(Funct());
alert(typeof Funct()); //хотя это и ф-ия...
</script>

Когда вы пишете Funct()(), это как func() - то есть вызывается ваш алерт...

lisawow 19.01.2012 14:24

Спасибо.

Разобралась


Часовой пояс GMT +3, время: 04:21.