Wee Wee
Wee Wee

Reputation: 197

Or operator not working in IF statement Node.js

I originally had a route in node.js that stated this:

If the req.url === something or something or something or something, do this, else, do that.

The problem is that the else statement never got executed even though the if condition was not met. Only the if statement executes no matter what

I have broken down my route to bare minimum trying to figure out the problem. I simplified it to this:

app.get('/test', function(req,res) {

        var category = 'stupid3';

        if(category === 'stupid' || 'stupid2') {

            res.end('yup');

        } else {

            res.end('nope');

        }

});

What am I doing wrong?

Why wont the else statement execute?

Upvotes: 1

Views: 37747

Answers (2)

dpkg
dpkg

Reputation: 321

the else statement is never executed because your if condition always returns true..

if (category === 'stupid' || 'stupid2') {

the second part of the condition i.e. after the || operator is 'stupid2 which is a truthy value

Upvotes: 1

user1106925
user1106925

Reputation:

You're using it incorrectly.

category === 'stupid' || category === 'stupid2'

Your version is effectively...

 (category === 'stupid') || 'stupid2'

...so because a non-empty string is "truthy", the RHS will always cause the || to pass.

Upvotes: 11

Related Questions