Truques legais aqui, eu tenho uma escolha nítida com muitas das respostas tradicionais seguras que não armazenam em cache o comprimento da matriz.
function arraySum(array){
var total = 0,
len = array.length;
for (var i = 0; i < len; i++){
total += array[i];
}
return total;
};
var my_array = [1,2,3,4];
// Returns 10
console.log( arraySum( my_array ) );
Sem armazenar em cache o comprimento da matriz, o compilador JS precisa percorrer a matriz com todas as iterações do loop para calcular o comprimento; na maioria dos casos, é uma sobrecarga desnecessária. A V8 e muitos navegadores modernos otimizam isso para nós, por isso é menos preocupante do que era, mas existem dispositivos mais antigos que se beneficiam desse cache simples.
Se o comprimento estiver sujeito a alterações, o armazenamento em cache poderá causar efeitos colaterais inesperados, se você não souber por que está armazenando o tamanho em cache, mas para uma função reutilizável cujo único objetivo é pegar uma matriz e adicionar os valores juntos, é um ótimo ajuste.
Aqui está um link CodePen para esta função arraySum.
http://codepen.io/brandonbrule/pen/ZGEJyV
É possível que essa seja uma mentalidade desatualizada que esteja presa a mim, mas não vejo uma desvantagem em usá-la nesse contexto.