class est un identifiant réservé

Où est mon erreur ?

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

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 ! :)

Édité par elyppire

Cette réponse a aidé l'auteur du sujet

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.

+0 -0

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…?

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

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