Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Что такое *!* и getFunc()() (https://javascript.ru/forum/misc/30506-chto-takoe-%2A-%2A-i-getfunc.html)

PashPP 06.08.2012 20:01

Что такое *!* и getFunc()()
 
Что за конструкции такие и как работает функция ниже? Спасибо.
var a = 1;
function getFunc() {
  var a = 2;
 
*!*
  var func = function() { alert(a); };
*/!*

  return func; 
}

getFunc()(); // *!*2*/!*

DreamTheater 06.08.2012 20:21

Внутри функции getFunc создается анонимная функция (func), которая замыкается на локальную переменную (a = 2). В результате вызова getFunc() нам вернется внутренняя анонимная функция, а если написать getFunc()() то и она здесь же выполнится и вернет значение переменной a (2).

PashPP 06.08.2012 20:39

DreamTheater,
Спасибо. А что такое *!* тогда? Похоже на что-то некультурное. Но во всю используется в примерах тут http://learn.javascript.ru/closures#...еменным

bes 06.08.2012 20:44

Цитата:

Сообщение от DreamTheater
а если написать getFunc()() то и она здесь же выполнится и вернет значение переменной a (2)

точнее выполнит код этой функции, то есть alert(a)

bes 06.08.2012 20:46

Цитата:

Сообщение от PashPP
Спасибо. А что такое *!* тогда?

Скорее всего у вас слабый интернет http://javascript.ru/formatting (http://javascript.ru/formatting#vazhnyy-blok-koda)

PashPP 06.08.2012 20:53

bes,
Да, спасибо.
интеренет действительно медленный, но это скорее всего из-за того, что я запретил выполнение дс в одном из заданий, которое зацикливало алерт.


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