ES6 Classes: Unexpected token in script?

panthro picture panthro · Oct 9, 2015 · Viewed 24.1k times · Source

I'm copying an example trying to learn ES6 but i'm getting a compile error:

Unexpected token (2:5)

It appears to be referring to the count = 0;

What am I doing wrong?

class Counter {
    count = 0;

    constructor() {
        setInterval(function() {
            this.tick();
        }.bind(this), 1000);
    }

    tick() {
        this.count ++;
        console.log(this.count);
    }
}

Answer

nils picture nils · Oct 9, 2015

In ES2015, when using the class syntax, you need to define instance variables either in the constructor or one of the methods (there is a proposal for the next iteration, ES2016, to allow for your syntax: ES Class Fields & Static Properties)

class Counter {

    constructor() {
        this.count = 0;
        setInterval(function() {
            this.tick();
        }.bind(this), 1000);
    }

    tick() {
        this.count++;
        console.log(this.count);
    }
}

var c = new Counter();

Check out the fiddle:

http://www.es6fiddle.net/ifjtvu5f/