Subj : Re: JavaScript vs. C/C++ behavior
To   : Fort Exile
From : Digital Man
Date : Sun Jul 07 2019 01:15 pm

 Re: Re: JavaScript vs. C/C++ behavior
 By: Fort Exile to Mortifis on Sun Jul 07 2019 10:03 am

>   Re: Re: JavaScript vs. C/C++ behavior
>   By: Mortifis to Digital Man on Tue May 21 2019 12:51 am
>
>  >  > In JavaScript:
>  >  >         i = 0 || 2; // i == 2
>
>  > the induction of i, anything greater than 0 but less than 2 is 1) ... in
>  > JS if the callback is greater than the initial state (0) then it is
>  > forced to 2 .. risking looking like a moron ... there wasn't much meat on
>  > the bone in
>
> The trouble with boolean operations in JavaScript is the concept of "truthy"
> anf "falsy" values. Javascript will always try and make a boolean comparison
> work, even if it is not comparing two boolean values. Thus, we wind up with
> "falsy" values that evaluate to FALSE when compared, and "truthy" values
> that evaluate to TRUE.
>
> The "falsy" values are: FALSE, 0, "" '' and `` (the empty string), null,
> undefined, and NaN.

NaN != false or true.

> The "truthy" values are everything else, including empty objects and arrays.
>
> This particular assignment does a boolean OR comparison. The first element
> that is "truthy" is the one that is assigned to the variable. Since 0 is
> always a "falsy" value, it is skipped, and we wind up with i === 2.

And the original implementation of JavaScript/LiveScript didn't actually behave that way, which is interesting. It was introduced as a "feature" as I suspect much of the languages weird (and cool) warts were.

                                           digital man

Synchronet "Real Fact" #50:
JAM and Squish were considered before developing Synchronet Message Base format.
Norco, CA WX: 76.7�F, 61.0% humidity, 0 mph S wind, 0.00 inches rain/24hrs

---
� Synchronet � Vertrauen � Home of Synchronet � [vert/cvs/bbs].synchro.net