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 mu
ch 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
|