2014-01-04 3 views
0

название уже ясно, в чем разница между матрицей, создающей массив внутри или снаружи цикла for.Разница определения массива внутри и снаружи цикла for

Я приведу вам пример.

var studentsarray = []; 

    for(var i = 0; i < 5; i++){ 

     var students = { 
       id:i, 
       roll:"9", 
       age:13 
     }//end students 

     studentsarray.push(students); 

     localStorage.setItem('veritabani', JSON.stringify(studentsarray)); 

    }//end for 

    var aldim = $.parseJSON(localStorage.getItem('veritabani')); 

    $.each(aldim, function(i,item){ 
     alert(item.id); 
    }); 

если я определить внутри для цикла, я не могу охватить все элементы, но если я определить вне для цикла, то только последнее значение (ID) отображается.

Можете ли вы объяснить, почему?

Заранее спасибо.

+2

Вы должны прочитать о концепции [Scope] (http://en.wikipedia.org/wiki/Scope_ (computer_science)). – 0xbe5077ed

+0

спасибо, теперь ясно;) – aldimeola1122

ответ

0

Несколько наблюдений:

  1. Javascript имеет только функцию уровня области видимости, поэтому определить переменную внутри для цикла эквивалентно определению его снаружи.
  2. Однако назначение переменной произойдет несколько раз, если внутри цикла for
  3. Обратите внимание, что JSON.stringify устанавливает значение studentarray по значению несколько раз, действительно ли вы имели в виду это сделать в цикле for?
  4. Интересно, действительно ли это то, что вы хотели сделать?

    var studentsarray = []; 
    
    for(var i = 0; i < 5; i++){ 
        studentsarray.push({id: i, roll:"9", age:13 }); 
    } 
    
    localStorage.setItem('veritabani', JSON.stringify(studentsarray)); 
    
    var aldim = $.parseJSON(localStorage.getItem('veritabani')); 
    $.each(aldim, function(i,item){ 
        alert(item.id); 
    }); 
    
Смежные вопросы