Ответ 1
A name
глобальная переменная уже существует, не связанная с вашим кодом; он представляет имя текущего окна, поэтому вы назначаете уже существующую переменную.
window.name; // the name of the current window for cross-window communication
Все в window
объявлено как глобальное - поэтому оно не является ссылкой-ошибкой, поскольку оно присваивает переменной во внешней области.
Супер запутанное: D
"use strict"
будет препятствовать определению новых глобальных переменных, здесь мы выполняем назначение существующей переменной, думаем об этом, поскольку name
находится в глобальной области видимости, например window.Blob
, window.console
и т.д.