Цитата:
Цитата:
Конструкции if не создают свою область видимости, поэтому код foo() if(false) function foo(){console.log("foo")} не скрывает foo() в условии. Неужели это нужно разжевывать еще тщательнее? Если бы использовали Function Expression в этом коде, то функция не была бы объявлена, так как до нее не дошел бы код. Извините, я потерял интерес к дальнейшему диалогу в этой ветке. |
Цитата:
Практически во всех языках if обладает свойством ЛЕНИВОСТИ. ОН НЕ ДОЛЖЕН выполнять код, если условие не совпадает. В нашем же случае, семантически, он выполняет его или не выполняет в зависимости от погоды на марсе. |
Цитата:
|
Цитата:
|
petya,
Рельно это нужно для того чтобы функция знала как её зовут и могла что-то с собой делать. var trololo = function () {alert(arguments.callee.name)}; trololo() function trololo() {alert(arguments.callee.name)} trololo(); В чисто конкретном месте я использовал это для обертки над классами (чтобы в консоли у объектов были нормальные имена) и для модуля логгера, который мог вывести всю цепочку наследования моего класса (Например он вывадил "Base.Module.UserEventManager") |
tsigel, НЕТ
var trololo = function trololo () {console.log(arguments.callee.name)}; trololo() |
Цитата:
trololo() var trololo = function trololo () {console.log(arguments.callee.name)}; trololo() |
tsigel,
Это значит, что имя функции это одно, а function declaration -- совершенно другое. Не по теме твой пример. |
petya,
Ну если это разные вещи и я говорю не по теме, то попробуй создать функцию с одинаковым именем переменной и самой функции так, чтобы она была объявлена в условии. И если условие не выполнится то функции не должно быть. |
tsigel,
if(0)foo=function foo(){} console.log(foo)//error |
Часовой пояс GMT +3, время: 05:40. |