Анонимная функция в условии
Не могу понять как работают анонимные функции в условиях.
Вот пример: var z = true if(z == true && function() {alert("a");return true})alert("b"); Мне казалось, что логичным было бы сначала вывести "a", а затем "b". Так нет! Он выводит только "b". Если мы поменяем в функции return на false, то ничего не изменится! То есть функция по-любому возвращает true? Что за чертовщина? И в чем я запутался? |
Ну так а вызывать функцию кто будет?
И да, отбивай конструкции пробелами. Читать невозможно. |
Я видимо что-то не понимаю в работе анонимных функций. Как тогда в моем случае вывести "а", а затем "b"?
|
z == true && (function() {alert("a");return true})()
|
Анонимная функция - это та же функция, только без имени. И ее тоже надо вызывать.
|
Petesso, чувак, ну тебе же Erolast уже сказал всё. У тебя почти всё правильно, ты определил функцию, но не вызвал её.
Вот, чего тебе не хватает: if(z == true && function() {alert("a");return true}())alert("b"); |
Цитата:
|
Erolast,
запустил, всё норм. А что не так? var z = true; if(z == true && function() {alert("a");return true}())alert("b"); |
Хм, и правда, всё норм. Без ифа бы еррор был - анонимную функцию при вызове надо в скобки оборачивать.
|
Цитата:
!function () { alert(1); } (); void function () { alert(2); } (); 1, function () { alert(3); } (); |
Часовой пояс GMT +3, время: 03:06. |