Переписал на ES6, думаю если вам интересна оптимизация, то и современный стиль вызовет интерес :)
window.addEventListener('load', () => {
const toggle = document.querySelector('#js-toggle')
const body = document.querySelector('#js-body')
const nav = document.querySelector('#js-nav')
const menuBg = document.querySelector('#js-menu-bg')
const toggleNav = document.querySelector('#js-toggle-nav')
const openCloseMenu = () => {
toggle.classList.toggle('toggle--active')
body.classList.toggle('body--overflow')
nav.classList.toggle('header__nav--active')
menuBg.classList.toggle('menu-bg--active')
}
for (const clickEl of [toggle, toggleNav, menuBg]) {
clickEl.addEventListener('click', openCloseMenu)
}
})
Нормальный ли прием с arrayElemOnClick ?
Вполне, у вас элементы по которым можно кликнуть, еще имеют смену класса при клике.
Без данного условия, можно создать специальный класс или data-attr, чтобы одним querySelectorAll найти все интерактивные элементы, и через цикл так-же добавить click.