On Wed, Sep 17, 2014 at 6:35 AM, Steve Fink <sph...@gmail.com> wrote:
>
> Is
>
>   if ((m = /foo:(\d+)/.exec(str)) && parseInt(m[1], 10) > 15) { ... }
>
> so bad?
>


well, you just polluted the global scope "by accident" creating (maybe) a
hybrid Array with properties attaches in order to just access index 1 where
same array needs to be evaluated as truthy in the initial `if`

VS

using a boolean value for an `if` statement and eventually access directly
`RegExp.$1`

which one would you pick?



> The global state *is* bad, and you don't need turns or parallelism to be
> bitten by it.
>
> function f(s) {
>   if (s.test(/foo(\d+/)) {
>     print("Found in " + formatted(s));
>     return RegExp.$1; // Oops! formatted() does a match internally.
>   }
> }
>

I don't think that's a real-world code example and I've personally never
done anything like that .. the case for `.test()` or
`String.prototype.search` **is** to instantly access `RegExp` later on.

This does not play well with generators or with functions call in the
middle but it does not have to, it's straight forward for its use case that
has worked together until now and for 12+ years.

However, this summarizes even better my thoughts on proposing such change
through `/u`

> Unicode flag disabling features to enable parallelism is another footnote
for WTFJS.

new language features shouldn't be abused to sneakily drop well known
functionalities, regardless what I smoke.

Regards
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to