Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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()?

like image 732
suhmedoh Avatar asked Dec 08 '22 18:12

suhmedoh


2 Answers

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.

like image 94
Mike Cluck Avatar answered Jan 28 '23 15:01

Mike Cluck


The first . is the decimal separator character. 1. is a number.

The second . is the object property accessor. someNumber.toPrecision is a function.

Another way to write it would be to write the number with more significant figures:

1.0.toPrecision()
like image 40
Quentin Avatar answered Jan 28 '23 16:01

Quentin