easyWrong PatternsJavaScript
The double negative
A developer asked an AI assistant to add a check that skips sending a marketing email to users who have opted out. The suggested condition compiles and passes a quick test, but a bug report shows some opted-out users are still receiving emails after an unrelated change nearby.
marketing.js
function shouldSendMarketingEmail(user) {
if (!user.preferences.notMarketingOptOut) {
return false;
}
return true;
}A teammate later 'simplifies' this by removing the if/return and just returning the condition directly. What's the real risk with this function as written?
notMarketingOptOut is a double negative — true means 'not opted out' — which is easy to misread as 'opted out' and invert by accident during a future edit.
The function will throw if user.preferences is ever an empty object.
return false inside an if block is not valid syntax in strict mode.
JavaScript evaluates the ! operator twice on boolean values, canceling out the negation silently.