Sleepless One to Programmer Humor@lemmy.mlEnglish • 16 days agoThe JavaScript type coercion algorithmlemmy.mlimagemessage-square45fedilinkarrow-up1124arrow-down12file-textcross-posted to: programmer_humor@programming.dev
arrow-up1122arrow-down1imageThe JavaScript type coercion algorithmlemmy.mlSleepless One to Programmer Humor@lemmy.mlEnglish • 16 days agomessage-square45fedilinkfile-textcross-posted to: programmer_humor@programming.dev
minus-square@retrolasered@feddit.uklinkfedilinkEnglish4•15 days agoBut then why 2 == true if true is converted to 1
minus-square@Telemachus93@slrpnk.netlinkfedilink7•15 days agoIt’s not. Just tried in my Browser Console: 2 == true // returns false
minus-square@retrolasered@feddit.uklinkfedilinkEnglish6•15 days agoI genuinely wasn’t aware of that. I must be getting javascript confused for almost any other language. I wonder how many times ive !!'d a value to make that work without actually absorbing that into my head now…
minus-square@Telemachus93@slrpnk.netlinkfedilink3•15 days agoIn other languages that shouldn’t be equal either though, right? Maybe you meant if (2){ console.log("nonzero ints are truthy") } else { console.log("no they're not") } Which would output nonzero ints are truthy and that would actually work in all languages I know. But that’s different from being equal.
minus-square@retrolasered@feddit.uklinkfedilinkEnglish3•15 days agoYeah its checking for not null with if isnt it. Maybe thats what has me confused
minus-squareNewDark [he/him]linkfedilinkEnglish6•15 days ago2 is ‘truthy’, or rather, not ‘falsy’. I’m not even kidding.
minus-square@Midnitte@beehaw.orglinkfedilinkEnglish6•edit-215 days ago3 - 1 // -> 2 3 + 1 // -> 4 '3' - 1 // -> 2 '3' + 1 // -> '31'
But then why 2 == true if true is converted to 1
It’s not. Just tried in my Browser Console:
2 == true // returns false
I genuinely wasn’t aware of that. I must be getting javascript confused for almost any other language. I wonder how many times ive !!'d a value to make that work without actually absorbing that into my head now…
In other languages that shouldn’t be equal either though, right?
Maybe you meant
if (2){ console.log("nonzero ints are truthy") } else { console.log("no they're not") }
Which would output
nonzero ints are truthy
and that would actually work in all languages I know. But that’s different from being equal.
Yeah its checking for not null with if isnt it. Maybe thats what has me confused
2 is not == true, but !!2 is true
2 is ‘truthy’, or rather, not ‘falsy’.
I’m not even kidding.
3 - 1 // -> 2
3 + 1 // -> 4
'3' - 1 // -> 2
'3' + 1 // -> '31'