javascript-tutorial / ru.javascript.info

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

[Баг]: #1939

Closed Hunter-137 closed 8 months ago

Hunter-137 commented 8 months ago

Описание

В статье про замыкание в задаче про if есть код:

let phrase = "Hello";

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

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

sayHi();

Проблема в том, что данный код в консоли браузера и в компиляторе js отображает не ошибку, а фразу "Hello, John".

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

Для наглядности:

  1. Запустите код по кнопке "Выполнить" на сайте учебника — alert выдаст ошибку;
  2. Запустите код в консоли браузера Chrome — alert выдаст Hello, John
  3. Запустите код в компиляторе js — alert выдаст Hellom John

Браузер

У меня воспроизводится этот баг в Chrome Версия 122.0.6261.129 (Официальная сборка), (64 бит)

Alexandre887 commented 8 months ago

Здравствуйте.

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

Hunter-137 commented 8 months ago

Здравствуйте! Понял, спасибо большое за объяснение.