Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.javascript > #36659
| From | Thomas 'PointedEars' Lahn <PointedEars@web.de> |
|---|---|
| Newsgroups | comp.lang.javascript |
| Subject | Re: Create array using name from string? |
| Date | 2019-05-29 00:22 +0200 |
| Organization | PointedEars Software (PES) |
| Message-ID | <5255243.DvuYhMxLoT@PointedEars.de> (permalink) |
| References | <38042cf3-73ca-403a-b13b-7bcfbec21ffb@googlegroups.com> <qcivl4$119l$1@gioia.aioe.org> <qcj10g$17lk$1@gioia.aioe.org> <84fe9111-5bab-4537-8d08-424ec56763d7@googlegroups.com> <87h89elg1u.fsf@bsb.me.uk> |
Ben Bacarisse wrote:
> dr.j.r.stockton@gmail.com writes:
>> On Tuesday, 28 May 2019 11:03:03 UTC+1, R.Wieser wrote:
>>> Forget what I said. I just noticed that this is the javascript
>>> newsgroup, and not the VBScript one. My bad.
>>
>> No matter - your reply only needed translation :-
>>
>> S = "Banana"
>> eval("var " + S + " = [2, 9, +new Date()]")
>> Banana // is now a three-element array
>
> Mind you, it's worth pointing out, I think, that this sort of code is
> widely regarded as a Very Bad Thing. The OP is immune to such
> suggestions but there may be innocent learners reading this!
To elaborate, the posted code will *not work* in strict mode:
1. “S” as posted is an undeclared identifier; this will throw a
ReferenceError exception.
2. If the first problem is fixed, the code will still not work as
described because in strict mode declarations in eval execution context
do not propagate to the calling context: a ReferenceError exception
will be thrown on resolving “Banana” even though it would be declared
in the eval context.
In non-strict mode, the code will work to some extent but exhibit side
effects such as overwriting properties of objects in the scope chain and may
be prone to code injection because of eval().
In addition, using eval() here is not only less efficient, but completely
pointless (but I guess that was the point):
var banana = [2, 9, +new Date()];
“(new Date()).getTime()” is arguably less efficiently and less elegantly
written, but more explicit and more efficiently processed, than “+new
Date()”; the latter would be because evaluating it takes fewer detours
through the ECMAScript algorithm jungle.
Finally, I have replaced “Banana” with “banana” because it does not refer to
a constructor here. (Unfortunately, regarding his code style Dr. Stockton
appears to be stuck the world of Borland Pascal where such distinctions
need not be made because it is not an OOPL in the first place.)
--
PointedEars
FAQ: <http://PointedEars.de/faq> | <http://PointedEars.de/es-matrix>
<https://github.com/PointedEars> | <http://PointedEars.de/wsvn/>
Twitter: @PointedEars2 | Please do not cc me./Bitte keine Kopien per E-Mail.
Back to comp.lang.javascript | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Create array using name from string? Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-05-28 02:06 -0700
Re: Create array using name from string? Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-05-28 02:11 -0700
Re: Create array using name from string? "R.Wieser" <address@not.available> - 2019-05-28 11:39 +0200
Re: Create array using name from string? "R.Wieser" <address@not.available> - 2019-05-28 12:02 +0200
Re: Create array using name from string? dr.j.r.stockton@gmail.com - 2019-05-28 05:38 -0700
Re: Create array using name from string? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-05-28 17:06 +0100
Re: Create array using name from string? Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2019-05-29 00:22 +0200
Re: Create array using name from string? Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-05-29 00:07 -0700
Re: Create array using name from string? "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2019-05-29 09:47 +0200
Re: Create array using name from string? Julio Di Egidio <julio@diegidio.name> - 2019-05-29 10:10 -0700
Re: Create array using name from string? Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-05-30 11:10 -0700
Re: Create array using name from string? Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-05-30 11:12 -0700
Re: Create array using name from string? Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-05-30 11:22 -0700
Re: Create array using name from string? Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-05-30 11:28 -0700
Re: Create array using name from string? Julio Di Egidio <julio@diegidio.name> - 2019-05-29 10:24 -0700
Re: Create array using name from string? Cezary Tomczyk <cezary.tomczyk@gmail.com> - 2019-05-30 11:37 +0200
Re: Create array using name from string? Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2019-05-30 12:35 +0200
Re: Create array using name from string? Julio Di Egidio <julio@diegidio.name> - 2019-05-30 03:43 -0700
Re: Create array using name from string? Julio Di Egidio <julio@diegidio.name> - 2019-05-30 03:48 -0700
Re: Create array using name from string? Gene Wirchenko <genew@telus.net> - 2019-05-30 12:13 -0700
Re: Create array using name from string? "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2019-05-30 10:34 -0700
Re: Create array using name from string? John G Harris <niam@jghnorth.org.uk.invalid> - 2019-05-31 19:01 +0100
Re: Create array using name from string? Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-05-31 11:21 -0700
Re: Create array using name from string? "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2019-06-01 00:31 +0200
Re: Create array using name from string? Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-06-01 00:40 -0700
Re: Create array using name from string? Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-06-01 01:10 -0700
Re: Create array using name from string? John G Harris <niam@jghnorth.org.uk.invalid> - 2019-06-01 10:14 +0100
Re: Create array using name from string? Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-05-29 00:15 -0700
Re: Create array using name from string? "R.Wieser" <address@not.available> - 2019-05-29 09:35 +0200
Re: Create array using name from string? Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-05-29 01:16 -0700
csiph-web