String.prototype.replace() problems with JSON.stringify() and serialization of Objects

Andrea Giammarchi andrea.giammarchi at gmail.com
Tue Jul 29 09:36:55 PDT 2014


'0101'.replace('0', function(){return 1}) == '1101'

so your last two are the same:

replace(string, callback) -> called one time, using the first indexOf and
replacing it invoking the callback
replace(string, string) -> called one time, using the first indexOf and
replacing it via provided string and checking $



On Mon, Jul 28, 2014 at 10:29 PM, Christoph Martens <cmartensms at gmail.com>
wrote:

>  On 28.07.2014 17:24, Rick Waldron wrote:
>
>
>
>
> On Mon, Jul 28, 2014 at 11:16 AM, Boris Zbarsky <bzbarsky at mit.edu> wrote:
>
>> On 7/28/14, 11:09 AM, Rick Waldron wrote:
>>
>>>    var y = x.replace('{{blob}}', function() {
>>>      return data;
>>>    });
>>>
>>
>>  In fairness, that's the sort of thing that gives off a "WAT smell". Code
>> like this without a comment that explains the indirection is just asking
>> someone to "simplify" it, breaking it in the process...
>
>
>  I don't disagree with your feedback, but JS has had special semantics
> for "$" (with ’ or n) character in the replaceValue since ES3 (just short
> of 15 years). I didn't say that the solution was obvious, just that it
> required familiarity ;)
>
>  Rick
>
>
> _______________________________________________
> es-discuss mailing listes-discuss at mozilla.orghttps://mail.mozilla.org/listinfo/es-discuss
>
>
> Hey Rick,
>
> To be honest, I didn't know the trick with the dummy filter function
> returning the plain data. I expected that it was executed each time a match
> was found (similar to Array filter functions).
>
> I think for external guys writing JavaScript, the WAT effect is pretty
> huge. Either we should change the behaviour of the parameters (which is bad
> for legacy implementations) or the flags to disable it optionally.
>
> As I wasn't familiar with the replace behaviour before, I would expect the
> method to behave differently, depending on the arguments:
>
>
> replace(regexp, string) -> parse string and see if $ is in there
> replace(regexp, callback) -> callback is called each time regexp is matched
> replace(string, callback) -> only called once
> replace(string, string) -> called one time, using the first indexOf and
> replacing it
>
>
> ~Chris
>
>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20140729/f06f2f5b/attachment.html>


More information about the es-discuss mailing list