bogdan_uman
@bogdan_uman
шлЫмазл неукЪ-поцЪ

Почему функция, определенная в выражении выражения 'if', не видна снаружи?

Здравствуйте, а не подскажите, а в консоль возвращается undefined? Спасибо
if (function f() {}) {
    console.log(f) // undefined
}
  • Вопрос задан
  • 102 просмотра
Решения вопроса 1
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
Потому что в такой записи функция является выражением. Именованным выражением, если быть точнее. А имя именованного функционального выражения является локальным для этого выражения, и доступно только внутри.
Значение этого выражения никуда не присваивается, а используется только вычисления условия. Функция у нас приводится к истине, условие выполняется. А внутри идет обращение к несуществующему в этом скоупе идентификатору f, вылетает undefined или Error в стрикт-режиме.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Lynn
@Lynn
nginx, js, css
Потому что это Function Expression и его имя видно только внутри самой функции.

learn.javascript.ru/function-declaration-expressio...
https://developer.mozilla.org/ru/docs/Web/JavaScri...
Ответ написан
Комментировать
villiwalla
@villiwalla
HTML-верстка
Может потому что f это обращение к переменной а не к функции f()?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы