Почему «цикл for» не возвращает все значения в массиве, если он не используется с дополнительным присваиванием? Какой рабочий процесс стоит за этим? - PullRequest
0 голосов
/ 31 августа 2018

Я новичок. Пожалуйста, дайте мне понимание этих примеров и разграничите два рабочих процесса.

Пример 1

var arrayList = ["php", "javascript", "c++", "C lang", "Python"];
var text ='';

for(var i = 0; i < arrayList.length; i++)
{
  text += arrayList[i] + "<br>";
}
document.getElementById("para").innerHTML=text;

Пример 2

var arrayList = ["php", "javascript", "c++", "C lang", "Python"];

 for(var i = 0; i < arrayList.length; i++)
  {
    var  text = arrayList[i] + "<br>";
   }
 document.getElementById("para").innerHTML=text;

Ответы [ 3 ]

0 голосов
/ 31 августа 2018

В первом примере вы постепенно добавляете к переменной text - что-то добавляется к ней каждый раз, когда код цикла повторяется. В конце у вас есть строка, содержащая все значения из списка.

Во втором примере значение text перезаписывается при каждом повторении цикла.


Ключевыми различиями являются место, где объявлено var text, и += (для добавления в строку), а не = (для простой установки переменной без учета предыдущего значения (если оно есть)).

Это не особенно сложный пример. Если вы изучите некоторые из довольно общих деталей синтаксиса JavaScript, операторов и концепции области видимости переменной, то это будет легко понять.

0 голосов
/ 31 августа 2018

Оператор плюс или сложение (+) при использовании со строками объединяет значения вместе, возвращая новый, представляющий собой объединение значений.

Вы можете проверить здесь: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#String#String_operators

Итак, в первом примере вы переходите к каждому элементу из массива и объединяете каждое значение в строку с именем text и вставляете этот список в html.

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

0 голосов
/ 31 августа 2018

Я не уверен, почему это неясно для вас. В первом примере вы явно добавляете к переменной text.

text += arrayList[i] + "<br>";

Вы видите оператор +=? Это называется конкатенацией или дополнением. то есть это эквивалентно:

text = text + arrayList[i] + "<br>";

В то время как во втором примере вы просто переопределяете переменную снова и снова, пока она не будет удалена и будет иметь только последнее значение. Вы перезаписываете переменную в приведенном ниже коде.

var text = arrayList[i] + "<br>";

Таким образом, вы получите только одно значение в конце. Речь идет не о ключевом слове var, а об используемом вами операторе. Технически, единственная разница между двумя вышеупомянутыми операторами - это оператор - один назначение , а другой добавление .

Я могу дать вам лучшую разницу между двумя при использовании фрагментов:

Пример 1

var arrayList = ["php", "javascript", "c++", "C lang", "Python"];
var text = '';
for (var i = 0; i < arrayList.length; i++) {
  text += arrayList[i] + "<br>";
}
document.getElementById("para").innerHTML = text;
<div id="para"></div>

Пример 2

var arrayList = ["php", "javascript", "c++", "C lang", "Python"];
var text = '';
for (var i = 0; i < arrayList.length; i++) {
  text = arrayList[i] + "<br>";
}
document.getElementById("para").innerHTML = text;
<div id="para"></div>

Второй пример был изменен, чтобы понять разницу между ними.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...