Объявление функции
Почему с expression работает?
if (f = function(){}){ alert(f); } а с declaration - ReferenceError: w is not defined if (function w(){}){ alert(w); } |
это связано с двухпроходной компиляцией. Видимо, изнури if declaration не компилируется при первом проходе. Вообще, function declaration таит в себе множество сюрпризов, лучше не использовать его вообще.
|
Nazaki, во втором случае NFE, а не FD. И w доступна только внутри функции, поэтому и ошибка.
В первом случае все работает. |
А по какому признаку в рамках данной задачи отличить FD от NFE?
То, что конструкция обвёрнута в скобки? Как вы определяете? |
Nazaki, FD может располагаться в коде только в двух местах: в глобальном контексте или внутри другой функции, и обязательно должна быть записана в виде:
function имя() { ... } Все остальное — FE, NFE (если есть имя). |
Всё, разобрался. FD не может быть объявлена в области "выражения". Скобками мы даём понять интерпретатору, что внутри выражения мы используем FE.
|
Спасибо
|
Часовой пояс GMT +3, время: 03:16. |