В чем разница между (var1 !== var2)
и (var1 && var1 !== var2)
в JavaScript?
Приведенный выше вопрос относится к работе с объектами HTMLElementObject в качестве переменных.
Пример разработки расширения для Google Chrome показывает это в следующей функции:
let current = event.target.parentElement.querySelector(
`.${selectedClassName}`
);
if (current && current !== event.target) {
current.classList.remove(selectedClassName);
}
let color = event.target.dataset.color;
event.target.classList.add(selectedClassName);
chrome.storage.sync.set({ color });
}
Почему это должно быть "текущий && текущий"? Это не работает только с "current !== event.target"
Ссылка на полную статью для справки: https://developer.chrome.com/docs/extensions/mv3/getstarted/#logic
Думайте об этом как
(current) && (current !== event.target)
в javascript у вас есть понятие «правдивого» или «ложного» значения. Это может указывать на то, что вы хотите ввести оператор if только в том случае, если значение current не равно
null
илиundefined
.Прочитайте это как «Существую ли я» И «Разве я не равняюсь этому». Когда вы удаляете первую проверку, это «Я не равняюсь этому», что верно. Вы чем делаете и пытаетесь получить доступ к чему-то, чего не существует.