Path: csiph.com!eternal-september.org!feeder.eternal-september.org!mx02.eternal-september.org!.POSTED!not-for-mail From: Ben Bacarisse Newsgroups: comp.lang.javascript Subject: Re: How to manipulate integer that sometimes Nan and sometimes have a value? Date: Tue, 29 Sep 2015 12:48:53 +0100 Organization: A noiseless patient Spider Lines: 58 Message-ID: <87oaglcuoq.fsf@bsb.me.uk> 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> <87fv21dkmy.fsf@bsb.me.uk> <7a92063a-1369-4a31-ac81-1d69e0bf8ad8@googlegroups.com> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Injection-Info: mx02.eternal-september.org; posting-host="017616aa25f81ec581c44d76d61ba2f3"; logging-data="23884"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/GZrxY/16GbLO1WaAtG9czqINX+LWl7qI=" Cancel-Lock: sha1:GeKOo0bKrQDbQV8GcX0QToEI/ww= sha1:kZpESQX5KVjVC56GAq2OghnOF3A= X-BSB-Auth: 1.d86240833a39db03459d.20150929124853BST.87oaglcuoq.fsf@bsb.me.uk Xref: csiph.com comp.lang.javascript:28761 jonas.thornvall@gmail.com writes: > Den lördag 26 september 2015 kl. 21:51:43 UTC+2 skrev Ben Bacarisse: >> ... An as yet >> unassigned array position is undefined -- it won't have NaN as its >> value. However, isNaN (the global function by that name) converts it's >> argument in such a way that undefined becomes NaN. >> >> $ nodejs >> > var a = []; >> undefined >> > a[1] >> undefined >> > a[1] === undefined >> true >> > isNaN(a[1]) >> >> This may be why you think you have NaN in the "extra" digit places. >> > > From what i understand an array, is a storage bin/stack of items. Now > i have a stack of items that in most case do have an initiated element > at index, but in some cases it is indeed empty. Your terminology is wrong. An array is not a stack and the metaphor of describing as yet unused elements as empty is leading you astray. They are nether full nor empty -- an expression that accesses an unknown property of an object has the value called undefined. That's a value like any other, and you can even assign it to an array element -- a[i] may have been set to undefined. > Since it is integer > elements i do perform opeations upon performing carry operations, i > think it is kind of weird that there is no good way to deal with this. There is a way to deal with this. You don't consider it a good way, but there's nothing that can be done about that. > This must be the most common problem programming statistics. I do not > see why i should not be able to add to an undefined value, it is > basicly like adding to zero. And since the type of the elements stored > are integers, i just can't see the point i have to do a check > everytime an assign a zero, it is ridiculous. A suggestion to fill the > slot ahead with zeroes do not work either because then the array > length will not report correct. Not everyone has the same view of what is ridiculous. I think what ECMAScript does here is perfectly sensible. > It is kind of strange that such operation report NaN back. It's a reasonably choice for the language designers to have made. You might prefer to switch to Perl. In Perl, undef() + 1 == 1 although it is considered bad style to rely on that fact. -- Ben.