На мой взгляд, лучший способ - использовать функцию Array.forEach. Если вы не можете использовать это, я бы посоветовал получить polyfill из MDN, чтобы сделать его доступным, это, безусловно, самый безопасный способ перебора массива в JavaScript.
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach
Итак, как и предполагали другие, это почти всегда то, что вы хотите:
var numbers = [1,11,22,33,44,55,66,77,88,99,111];
var sum = 0;
numbers.forEach(function(n){
sum += n;
});
Это гарантирует, что все, что вам нужно в области обработки массива, остается в этой области, и что вы обрабатываете только значения массива, а не свойства объекта и другие члены, что и нужно для ... in.
Использование обычного стиля c для цикла работает в большинстве случаев, просто важно помнить, что все внутри цикла разделяет его область действия с остальной частью вашей программы, {} не создает новую область действия.
Таким образом:
var sum = 0;
var numbers = [1,11,22,33,44,55,66,77,88,99,111];
for(var i = 0; i<numbers.length; ++i){
sum += numbers[i];
}
alert(i);
выведет «11» - что может или не может быть тем, что вы хотите.
Рабочий пример jsFiddle:
https://jsfiddle.net/workingClassHacker/pxpv2dh5/7/