javascript - This not working as expected in nested arrow functions in ES6 -


i'm new arrow functions , don't understand why can use code:

const adder = {     sum: 0,     add(numbers) {         numbers.foreach(n => {             this.sum += n;         });     } };  adder.add([1,2,3]); // adder.sum === 6 

... , works fine, in following case this not bound properly:

const adder = {     sum: 0,     add: (numbers) => {         numbers.foreach(n => {             this.sum += n;         });     } };  adder.add([1,2,3]); // cannot read property sum 

from mdn:

an arrow function expression has shorter syntax function expression , not bind own this, arguments, super, or new.target.(...)

meaning inside arrow function this refers outter this there is. if run in browser, this window object.

use adder.sum instead of this.sum.

fiddle


Comments

Popular posts from this blog

python - Operations inside variables -

Generic Map Parameter java -

arrays - What causes a java.lang.ArrayIndexOutOfBoundsException and how do I prevent it? -