class est un identifiant réservé

Où est mon erreur ?

Le problème exposé dans ce sujet a été résolu.

Bonjour les agrumes !

Je m'intéresse de plus en plus à JavaScript, surtout depuis que j'ai découvert la nouvelle version du standard EcmaScript. J'ai don décidé de faire ce défi. J'ai essayé d'utiliser les nouvelles fonctionnalités comme les templates strings, la boucle for-of et la POO, mais j'ai un problème avec ce dernier point. En effet lorsque j'éxécute mon script je reçoit une erreur qui est : SyntaxError : class is a reserved identifier. Voilà, je n'en sais pas plus même après avoir lu une dizaine d'articles et de topics différents sur le sujet …

Et voici mon code (ça peut vous être utile) :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
class Calculette {
    constructor () {
        read ();
        eval ();
        print ();
    }

    read () {
        var input = prompt("Veuillez entrer votre calcul");
        var splitted = [];
        for (var char of input) {
            if (char != " ") {
                if (!operations.includes(char)) {
                    char = Number(char);
                }
                splitted.unshift(char);
            }
        }

        this.stack = splitted;
    }

    eval () {

        for (var word of stack) {

            if (!operations.includes(word)) {
                this.stack.unshift(word);
            } else {
                var op1 = this.stack.pop;
                var op2 = this.stack.pop;

                if (word == "+") {
                    this.stack.unshift(op1 + op2);
                } else if (word == "-") {
                    this.stack.unshift(op1 - op2);
                } else if (word == "*") {
                    this.stack.unshift(op1 * op2);
                } else if (word == "/") {
                    this.stack.unshift(op1 / op2);
                }
            }

            this.result = this.stack.pop();
        }
    }

    print () {
        alert (`Le résultat est ${this.result}`);
    }
}

var calc = new Calculette();
const operations = ["+", "-", "*", "/"];

Oui, pas de balise secret, j'ai du mal avec le markdown, désolé.

Merci d'avance pour votre aide ! :)

+0 -0

Hello,

Le mot-clé class n'est utilisable qu'en ES6. Si tu es avec nodejs il faudra utiliser "use strict"; en début de fichier (et être certain que tu utilises bien nodejs 4.x).

Si tu veux l'utiliser en web, je connais moins bien les conditions mais cela ne fonctionnera qu'avec Google Chrome (ou Chromium, évidemment).

Au passage, les classes définies de la sorte ne sont pas forcément idéales dans le cadre du développement en javascript.

D'accord, merci pour votre aide. Je pense que je vais opter pour un transpilateur, j'aimerai que ma solution marche sur tous les navigateurs.

Au passage, les classes définies de la sorte ne sont pas forcément idéales dans le cadre du développement en javascript.

Nek

Qu'es ce que tu veux dire par là ?

J'ai rencontré les problèmes suivants quand j'ai voulu les utiliser:

  • Problèmes de scope (le this est bizarre)
  • Pas d'introspection
  • Pas de prototypage
  • Pas de variables et méthodes privées

Mon plus gros problème a été les soucis de scope, mais c'est peut être uniquement du côté de nodejs…?

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte