Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.08.2012, 20:01
Профессор
Отправить личное сообщение для PashPP Посмотреть профиль Найти все сообщения от PashPP
 
Регистрация: 26.07.2012
Сообщений: 281

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

  return func; 
}

getFunc()(); // *!*2*/!*
Ответить с цитированием
  #2 (permalink)  
Старый 06.08.2012, 20:21
Аватар для DreamTheater
Профессор
Отправить личное сообщение для DreamTheater Посмотреть профиль Найти все сообщения от DreamTheater
 
Регистрация: 15.02.2011
Сообщений: 471

Внутри функции getFunc создается анонимная функция (func), которая замыкается на локальную переменную (a = 2). В результате вызова getFunc() нам вернется внутренняя анонимная функция, а если написать getFunc()() то и она здесь же выполнится и вернет значение переменной a (2).
Ответить с цитированием
  #3 (permalink)  
Старый 06.08.2012, 20:39
Профессор
Отправить личное сообщение для PashPP Посмотреть профиль Найти все сообщения от PashPP
 
Регистрация: 26.07.2012
Сообщений: 281

DreamTheater,
Спасибо. А что такое *!* тогда? Похоже на что-то некультурное. Но во всю используется в примерах тут http://learn.javascript.ru/closures#...еменным
Ответить с цитированием
  #4 (permalink)  
Старый 06.08.2012, 20:44
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от DreamTheater
а если написать getFunc()() то и она здесь же выполнится и вернет значение переменной a (2)
точнее выполнит код этой функции, то есть alert(a)
Ответить с цитированием
  #5 (permalink)  
Старый 06.08.2012, 20:46
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от PashPP
Спасибо. А что такое *!* тогда?
Скорее всего у вас слабый интернет http://javascript.ru/formatting (http://javascript.ru/formatting#vazhnyy-blok-koda)
Ответить с цитированием
  #6 (permalink)  
Старый 06.08.2012, 20:53
Профессор
Отправить личное сообщение для PashPP Посмотреть профиль Найти все сообщения от PashPP
 
Регистрация: 26.07.2012
Сообщений: 281

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что такое "клиентская библиотека"? jsuse Общие вопросы Javascript 3 27.04.2012 01:50
фрактальный сыр x-yuri Оффтопик 76 23.11.2011 21:59
Что такое window.external? FINoM Общие вопросы Javascript 1 09.11.2011 04:21
Поюзайте хомячка Nanto Ваши сайты и скрипты 30 06.06.2011 22:16
Что такое "javascript:document.login.submit()" i_live_in_Moscow Общие вопросы Javascript 21 30.09.2008 15:25