Path: csiph.com!news.swapon.de!weretis.net!feeder1.news.weretis.net!news.solani.org!.POSTED!not-for-mail From: Thomas 'PointedEars' Lahn Newsgroups: comp.lang.javascript Subject: Re: How to manipulate integer that sometimes Nan and sometimes have a value? Date: Sun, 27 Sep 2015 13:50:13 +0200 Organization: PointedEars Software (PES) Lines: 51 Message-ID: <5607D7F5.2000607@PointedEars.de> References: <9060ce04-2f9e-4554-be83-2f69c213424f@googlegroups.com> <4f31ec16-109f-43b2-9d50-b39d4fb47f84@googlegroups.com> <3cf46737-de54-489e-9d9d-89413b18c099@googlegroups.com> <87wpvdec2d.fsf@bsb.me.uk> <64092fce-7ef7-48d7-9e0d-27a2220fcfe0@googlegroups.com> <4175397.OLgykfH8RQ@PointedEars.de> Reply-To: Thomas 'PointedEars' Lahn Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit X-Trace: solani.org 1443354613 10729 eJwFwQEBwDAIAzBNDNoOOXCGfwlP4DR+CoKBxcbIwX5pliYNcdRR+dZxbupuz6WW9aQ6+QMJlBCg (27 Sep 2015 11:50:13 GMT) X-Complaints-To: abuse@news.solani.org NNTP-Posting-Date: Sun, 27 Sep 2015 11:50:13 +0000 (UTC) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Icedove/31.7.0 X-User-ID: eJwFwYEBwDAEBMCVKP8YhyT2H6F3MCpPOEHHYtkW+XW5H202uTdavyJQ8BTUDckWa33PbAYxczuz7kJqfjRlFQ8= In-Reply-To: Cancel-Lock: sha1:L8WDxddC4RxQnd4fDNFc/2Xqsu0= X-NNTP-Posting-Host: eJwFwYEBwCAIA7CXhEKVcwba/09YkqBxdjAZqRSEtjrjnomSX+M6pHqWN0I7vpGLePC6jz8NPxDX Xref: csiph.com comp.lang.javascript:28743 Evertjan. wrote: > Thomas 'PointedEars' Lahn […] wrote […]: >> Evertjan. wrote: >>> What you probably mean is that the element may be >>> EITHER undefined >>> OR hold null OR a string OR an object. >>> >>> When testing with >>> >>> isNaN(element) >>> >>> it will return "true" because isNaN() returns true in all these cases. >> >> isNaN("42") === false >> isNaN({valueOf: function () { return 42; }}) === false >> isNaN({toString: function () { return "42"; }}) === false > > Indeed, > "42" being a string, > the other two are objects. Exactly. (_Object references_, to be precise.) > There must be a point of no return somewhere, > because otherwise what would be the point of it all? I have no idea what you mean. You did not realize, and my examples show, that isNaN(value) returns “false” if ToNumber(value) is not NaN. For object references, this is the primitive representation of the object referred to by “value”, with a preference on value.valueOf(), and value.toString() as fallback. For string values (which can also be returned by .toString()) it suffices if “value” can be interpreted as an expansion of /StringNumericLiteral/. Therefore, in general your statement is wrong. Another example: isNaN(["42"]) === isNaN([42]) === false Number.isNaN() was introduced in ECMAScript 2015 because isNaN() does this conversion and interpretation. -- PointedEars FAQ: | SVN: Twitter: @PointedEars2 | ES Matrix: Please do not cc me. / Bitte keine Kopien per E-Mail.