2016-06-30 1 views
0

Вот код, относящийся к формеОбласть для переменной цикла в JQuery и JavaScript

$form.submit(function(e) { 

     e.preventDefault(); 

     var fields = ['id', 'name', 'subject', 'theory', 'practical']; //? 
     var record = {}; 

     for (var index in fields) { 

      var field = fields[index]; 

      if (field == 'id' || field == 'theory' || field == 'practical') 
       record[field] = parseInt($('input#'+field).val()); 

      else 
       record[field] = $('input#'+field).val(); 

     } 

/* Теперь в этом положении, если я инициализировать метод в $ .ajax и внутри, что я создаю для цикла снова как это

for (var field in record) { 

          if (field == 'id') 
           continue; 

Это поле здесь такое же, как поле выше ??

*/ }

ответ

0

ли поле здесь такой же, как поле выше?

Да, с var Это так. Это не было бы с let в ES2015, но с var, потому что var где-нибудь в функции имеет область видимости функции и объявление водрузил к верхней части функции они находятся.

Если мы добавим, что цикл, мы получаем следующее:

$form.submit(function(e) { 

    e.preventDefault(); 

    var fields = ['id', 'name', 'subject', 'theory', 'practical']; //? 
    var record = {}; 

    for (var index in fields) { 

     var field = fields[index]; 

     if (field == 'id' || field == 'theory' || field == 'practical') 
      record[field] = parseInt($('input#' + field).val()); 

     else 
      record[field] = $('input#' + field).val(); 

    } 
    for (var field in record) { 

     if (field == 'id') 
      continue; 
    } 
}); 

который обрабатывается так же, как если бы это было так:

$form.submit(function(e) { 
    // All of the variables are declared before step-by-step code runs 
    var fields; 
    var record; 
    var index; 
    var field; 

    e.preventDefault(); 

    fields = ['id', 'name', 'subject', 'theory', 'practical']; //? 
    record = {}; 

    for (index in fields) { 

     field = fields[index]; 

     if (field == 'id' || field == 'theory' || field == 'practical') 
      record[field] = parseInt($('input#' + field).val()); 

     else 
      record[field] = $('input#' + field).val(); 

    } 
    for (field in record) { 

     if (field == 'id') 
      continue; 
    } 
}); 

что бы не быть правдой, если вы использовали let. С let переменные являются блочными и только частично подняты.

Смежные вопросы