Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
46
rated 0 times [  53] [ 7]  / answers: 1 / hits: 26591  / 11 Years ago, wed, june 19, 2013, 12:00:00

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





console.log( && Dog);    // 
console.log(Cat && Dog); // Dog





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


More From » string

 Answers
11

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
console.log(c)
// => true


If you want a simple shortcut for the boolean, use the Boolean constructor -



var c = Boolean(Cat && Dog)
console.log(c)
// => 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


[#77538] Tuesday, June 18, 2013, 11 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
karivictoriab

Total Points: 530
Total Questions: 90
Total Answers: 95

Location: Honduras
Member since Sun, Dec 26, 2021
2 Years ago
;