Ashesh Ashesh - 6 months ago 27
Javascript Question

Logical operator && and two strings in javascript

When I use the logical opertor && between two strings, why does it give me the second string as output:

var c = "Cat" && "Dog";

I realize that the with the exception of 0, false, null, undefined, "" - everything else is evaluated as a boolean true in a logical expression like the one above. But why is the output second string and not the first ? And why is the ouput not just "true" since it is being evaluated as a boolean expression.



in the expression

"Cat" && "Dog"
// => "Dog"

Because you're using &&, JavaScript is promising you that it will verify that both sides of the expression are true. In this case, "Dog" is the just the last evaluated thing.

To be more explicit, you could do something like

var c = "Cat" != null && "Dog" != null

It's a little bit more wordy, but this boils down to

var c = true && true
// => true

If you want a simple shortcut for the boolean

var c = !!("Cat" && "Dog")
// => true

If you just use a simple REPL or JavaScript console, you'd be able to see this output very easily.

Per one of the comments below

Using ||, JavaScript is promising you that at least one of the sides is true. Since "Cat" is true, it stops there and returns "Cat". This is known as Short-circuit evaluation