С включенным "use strict", почему я могу назначить переменную без let при использовании prompt()


Я написал "use strict"; в верхней части моего сценария.

Я не могу написать num = 5;, потому что я получаю ReferenceError: Can't find variable: num.

Чтобы исправить это, я могу написать let num = 5;.

Используя эту логику, почему мне разрешено писать name = prompt("What is your name?");?

Разве я не должен писать let name = prompt("What is your name?")?

1 3

1 ответ:

Предполагая, что вы запускаете это в браузере, вы видите такое поведение из-за window.name собственность. Второй пример-это сохранение значения, возвращаемого параметром prompt в этом свойстве.

Если бы окно имело встроенное свойство num, Ваш первый пример также работал бы.

Конечно, в реальном коде вы хотели бы создать переменную для хранения значения prompt, а не для разбиения window.name.