Хорошо, так что ниже просто сжимает навигацию при прокрутке, но что-то заметил. Он все еще работал, хотя я поставил nav.classList, когда он должен был быть mainNav.classList. Затем я вошел в консоль, и nav и mainNav возвращают то же самое, даже если nav не объявлен. Это происходит с каждым идентификатором в моем HTML, поэтому, если я введу только имя идентификатора без getElementById, он все равно выйдет из узла. Я немного не понимаю, почему это работает. Это ново для ES6?
var mainNav = document.getElementById('nav'); //The whole navigation
window.addEventListener('scroll', function(){
var scroll = window.pageYOffset | document.body.scrollTop;
if (scroll < 100){
nav.classList.remove('nav-shrink');
} else {
nav.classList.add('nav-shrink');
}
});



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Это не относится к ES6. Если у вас есть элемент DOM с идентификатором и вы используете этот идентификатор в качестве имени переменной (нигде больше не объявляется), вы получите элемент DOM:
Демо
console.info(hello);<div id = "hello"></div>Я никогда не знал этого, поэтому спасибо за ответ, но я предполагаю, что это плохая практика, и мне следует использовать getElementById
@ Zach4531 Да, я не думаю, что вам следует использовать эту "функцию" в своем коде. Если вы поделитесь своим кодом с другими людьми, их может сбить с толку тот факт, что переменная нигде не объявлена, а если вы работаете с библиотеками или кодом других людей, их код мог нарушит вашу работу. Итак, делайте это по-чистому :)
Разве вы не пользуетесь какой-то библиотекой? Это нестандартное поведение. Если вы сможете показать нам больше своего кода, это может помочь нам помочь вам. Возможно, у вас заранее установлены какие-то глобальные переменные. Обновлено: В конце концов, часто можно ссылаться на свои элементы по их идентификатору. Моя плохая, не знала этого