Показать сообщение отдельно
  #2 (permalink)  
Старый 05.06.2011, 15:30
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

function testfn(fn){
  alert(fn);
};

var object = { handler: testfn("test") }; // "test"

alert( object.handler ); // undefined

Строчка 5: интерпретатор сначала выполнит функцию (мы ведь вызываем ее с помощью круглых скобок), затем присвоит свойству handler результат выполнения функции, т.е. то, что она возвращает. Если функция не возвращает ничего явно (оператор return), она неявно возвращает undefined. Соответственно, object.handler === undefined (второй alert).
Ответить с цитированием