Pages

Best Practices: Iterating over Arrays

  • A simple for loop (see for):
    for (var i=0; i<arr.length; i++) {
        console.log(arr[i]);
    }
  • One of the array iteration methods (see Iteration (Nondestructive)). For example,forEach():
    arr.forEach(function (elem) {
        console.log(elem);
    });
Do not use the for-in loop (see for-in) to iterate over arrays. It iterates over indices, not over values. And it includes the keys of normal properties while doing so, including inherited ones.

http://speakingjs.com/es5/ch18.html

Quelques types primitifs

Environnement : la console !

Evaluez les expressions

déterminer l'affichage dans les deux cas !

function f1(){
    var a=1; 
    return f2();
}
function f2(){
    return a;
}

console.log(f1());

function g1(){               
   var a=1;               
   
   function f2(){
       return a;
   }
   return f2();
}
console.log(g1());

Nous devrons apprendre la notion de 

  1. portée lexical et 
  2. closure

for in with array : don't use it

itération sur les indices et non sur les valeurs
var arr = [ 'a', 'b', 'c' ];
for (var key in arr) { console.log(key); }
0
1
2
De plus, 
 var arr = [ 'a', 'b', 'c' ];
 arr.foo = true;
 for (var key in arr) { console.log(key); }
0
1
2
foo
correction : hasOwnProperty(key) !
for (var key in arr) {
    if (arr.hasOwnProperty(key)) {
        console.log(key);
    }
}
Finalement, on choisit
  • for (var i=0; i<arr.length; i++) {
        console.log(arr[i]);
    }
  • arr.forEach(function (elem) {
        console.log(elem);
    });

... est un opérateur !

Editeur en ligne : repl.it