Je travaille sur un projet dans lequel je dois gérer des frameworks javascript pour le travail. Nous avons un analyseur qui les lit, mais des erreurs sur les lignes avec .. comme

1..toPrecision()    

Ou

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

Il ne semble pas comprendre le "..", et moi non plus. Pourquoi ce javascript est-il valide? Comment fonctionne le mappage sur un seul numéro? Finalement, quelqu'un réparera l'analyseur, mais je recherche une solution temporaire pour savoir comment modifier le fichier .js minifié pour qu'il fonctionne. Existe-t-il une autre façon d'écrire quelque chose comme 24..map ()?

4
suhmedoh 3 avril 2017 à 17:32

2 réponses

Meilleure réponse

C'est une situation plutôt drôle. Les nombres peuvent avoir une valeur après la virgule décimale, non?

console.log(1.2345); // for example

Eh bien, il est également possible d'écrire un nombre avec une virgule décimale sans aucun nombre le suivant.

console.log(5.);

Le premier point est donc le point décimal. Le second est l'accesseur de propriété.

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

La spécification définit les littéraux décimaux comme:

DecimalIntegerLiteral . DecimalDigits opt ExponentPart opt

Où opt signifie facultatif.

10
Mike Cluck 3 avril 2017 à 14:44

Le premier . est le caractère séparateur décimal. 1. est un nombre.

Le deuxième . est l'accesseur de propriété d'objet. someNumber.toPrecision est une fonction.

Une autre façon de l'écrire serait d'écrire le nombre avec des chiffres plus significatifs:

1.0.toPrecision()
4
Quentin 4 avril 2017 à 08:05