В неаккуратном режиме JavaScript присвоение переменной, которая не объявлена, устанавливает это свойство для глобального объекта.Это (как вы можете сказать, потому что этот вопрос существует) - сбивающее с толку поведение.
В общем, вы всегда должны использовать строгий режим .Многие сбивающие с толку поведения исправляются в строгом режиме, включая случай, о котором вы спрашиваете здесь.
'use strict';
a = () => {};
Как видите, выполнение этого фрагмента дает ошибку ReferenceError, поскольку a
не объявлено.