javascript-tutorial / ru.javascript.info

Современный учебник JavaScript
https://learn.javascript.ru
Other
3.84k stars 917 forks source link

[Баг]: Неточный ответ в задаче "Функция внутри if" #1970

Closed s0nought closed 5 months ago

s0nought commented 5 months ago

Описание

Условие:

Посмотрите на код. Какой будет результат у вызова на последней строке?

let phrase = "Hello";

if (true) {
  let user = "John";

  function sayHi() {
    alert(`${phrase}, ${user}`);
  }
}

sayHi();

Ответ:

Результатом будет ошибка.

Функция sayHi объявлена внутри if, так что она живёт только внутри этого блока. Снаружи нет sayHi.

В строгом режиме - ошибка.

strict

Без - нет.

non-strict

Как воспроизвести?

  1. Открыть https://learn.javascript.ru/task/function-in-if
  2. Скопировать код задачи
  3. Открыть новую вкладку с DevTools на Console
  4. Вставить из буфера обмена и нажать Enter

Браузер

Chrome 125.0.6422.113

Firefox 126.0.1

Alexandre887 commented 5 months ago

Все примеры кода в учебнике подразумевают использование строгого режима в них (за редкими исключениями, но тогда есть пояснения к таким примерам). Об этом написано в самом начале, в статье «Строгий режим — "use strict"». Однако, поскольку это не первая Issue конкретно по этой задаче, добавляю уточнение.

image