Informazioni sugli array
Che di solito si desidera per iterare su array è il metodo forEach:
arr.forEach(function(el) {
alert(el);
});
Nel tuo caso specifico per incrementare ogni elemento di array, io consiglierei il metodo map :
arr = arr.map(function(t){ return t+1; });
Ci sono anche filter, reduce e altri, anch'essi utili.
Ma come Tim Down già menzionato, questi non funzioneranno di default in IE. Ma puoi anche aggiungere facilmente questi metodi per IE, come mostrato nella documentazione MDC, o addirittura puoi scrivere anche versioni più semplici di quelle nella documentazione MDC (non so perché siano così poco-JavaScript-y laggiù):
if (!Array.prototype.forEach) {
Array.prototype.forEach = function(func, scope) {
for (var i = 0, len = this.length; i < len; i++) {
func.call(scope, this[i], i, this);
}
};
}
ma non usare il costrutto for ... in
per gli array - questo è destinato per gli oggetti.
Chi riferimenti
un'altra cosa, a volte voglio usare il valore dell'elemento e, a volte voglio usare come riferimento. Qual è la differenza sintattica?
In JavaScript ogni variabile è in effetti un riferimento a qualche oggetto. Ma quei riferimenti sono passati per valore. Mi spiego ...
È possibile passare un oggetto a una funzione che modifica l'oggetto e le modifiche saranno visto fuori della funzione:
function incrementHeight(person) {
person.height = person.height + 1;
}
var p = {height: 10);
alert(p.height); // outputs: 10
incrementHeight(p);
alert(p.height); // outputs: 11
Qui si modifica il valore a cui i punti di riferimento person
per e così il cambiamento sarà riflesso al di fuori della funzione.
Ma qualcosa di simile fallisce:
function incrementHeight(height) {
height = height + 1;
}
var h = 10;
alert(h); // outputs: 10
incrementHeight(h);
alert(h); // outputs: 10
Qui si crea un oggetto completamente nuovo 11
e assegnare il suo riferimento alla variabile height
. Ma la variabile h
al di fuori della funzione contiene ancora il vecchio riferimento e quindi rimane da puntare a 10
.
Per imparare Javascript, provare: [Mozilla Developer Center] (https://developer.mozilla.org/en/JavaScript) e il [Web Standards Curriculum] (http://dev.opera.com/articles/view/programming-the-real-basics/) –