По мотивам JavaScript
Забавно смотреть, как люди смотрят на
На самом деле все еще хуже: это не сравнение, это присваивание. И присваивание возвращает значение, которое потом приводится к
Коротко по делу:
= — это присваивание. a = b присваивает b в a и возвращает b.
== и === — это сравнения (=== — строгое, без приведения типов).
В
Пример, чтобы не гадать:
Как не попадаться на это:
1. Используй === для сравнения.
2. Включи линтер (ESLint) с правилом no-cond-assign — сразу подсветит случайные присваивания в условиях.
3. Переключись на TypeScript — многие «случайные» присваивания станет легче отловить.
4. Пиши тесты и code review — глаз человека тоже нужен.
5. Если уж совсем паранойя —Yoda‑условия ('admin' === user) убирают ошибку «= вместо ===» (но это спорно).
И да — JavaScript иногда все же отстой.
#ИТ #разработка #JavaScript
Забавно смотреть, как люди смотрят на
if (user = admin) и думают «ага, сравнение — все плохо». На самом деле все еще хуже: это не сравнение, это присваивание. И присваивание возвращает значение, которое потом приводится к
true/false. То есть ты не «проверяешь», ты по‑тихому делаешь пользователя админом и проходишь в блок if, если присвоенное значение истинно. Коротко по делу:
= — это присваивание. a = b присваивает b в a и возвращает b.
== и === — это сравнения (=== — строгое, без приведения типов).
В
if (user = admin) ты меняешь user и результат выражения — admin, а не true/false сам по себе. Если admin — truthy, условие выполнится. Truthy/falsey: false/0/""/null/undefined/NaN — falsey; все остальное — truthy. Так что баг может быть незаметным.Пример, чтобы не гадать:
let user = 'guest';
const admin = 'admin';
if (user = admin) { // присвоили: user теперь 'admin', условие truthy -> выполняется
// Ой
}
Как не попадаться на это:
1. Используй === для сравнения.
2. Включи линтер (ESLint) с правилом no-cond-assign — сразу подсветит случайные присваивания в условиях.
3. Переключись на TypeScript — многие «случайные» присваивания станет легче отловить.
4. Пиши тесты и code review — глаз человека тоже нужен.
5. Если уж совсем паранойя —Yoda‑условия ('admin' === user) убирают ошибку «= вместо ===» (но это спорно).
И да — JavaScript иногда все же отстой.
#ИТ #разработка #JavaScript
🔥35❤30🥰28😍26💯26👍25🤩25❤🔥25🎉24