# Sum of all elements in an array

## Issue

I am a beginner in programming. I want to do the sum of all elements in an array. I made this but I can’t see where are my mistakes?

``````function ArrayAdder(_array) {
this.sum = 0;
this.array = _array || [];
}

this.sum = 0;
this.array.forEach(function (value) {
this.sum += value;
});
return this.sum;
};

var myArray = new ArrayAdder([1, 2, 3]);
console.log(myArray.computeTotal());
``````

## Solution

`this` inside the `forEach` callback refers to the global `window` object. To set the context of the callback, use the `Array#forEach` second argument to pass the context.

``````this.array.forEach(function (value) {
this.sum += value;
}, this); // <-- `this` is bound to the `forEach` callback.
``````
``````function ArrayAdder(_array) {
this.sum = 0;
this.array = _array || [];
}

this.sum = 0;
this.array.forEach(function (value) {
this.sum += value;
}, this);
return this.sum;
};

var myArray = new ArrayAdder([1, 2, 3]);

console.log(myArray.computeTotal());
document.write(myArray.computeTotal()); // For Demo purpose``````

If you’re looking for an alternative, you can use `Array#reduce`, here using with Arrow function

``````var sum = arr.reduce((x, y) => x + y);
``````
``````// Note: If this doesn't work in your browser, 