Search code examples
javascriptminifiedjs

What is the 'double-dot' [eg. 5..toFixed()] I see in minified js?


I'm working on a project where I need to deal with javacsript frameworks for work. We have a parser that reads through them, but errors on lines with .. such as

1..toPrecision()    

or

24..map(function(t){return 7..map(function(a){return e[a][t]})

It doesn't seem to understand the "..", and I don't either. Why is this valid javascript? How does mapping on a single number work? Eventually someone will fix the parser, but I'm looking for a temporary fix as to how I can edit the minified .js file to work. Is there another way to write something like 24..map()?


Solution

  • It's kind of a funny situation. Numbers can have a value after the decimal point, right?

    console.log(1.2345); // for example

    Well, it's also possible to write a number with a decimal point without any numbers following it.

    console.log(5.);

    So the first dot is the decimal point. The second is the property accessor.

    console.log(5.                  .toString());
    //           ^ decimal point    ^ property accessor

    The specification defines decimal literals as:

    DecimalIntegerLiteral . DecimalDigits opt ExponentPart opt

    where opt means optional.