В чем разница между этими двумя циклами? Почему один работает, а другой нет?

#javascript #string #loops #for-loop

#javascript #строка #циклы #for-цикл

Вопрос:

Я хочу знать, почему, когда я добавляю переменную со значением пустой строки («), цикл работает, но когда я удаляю его, цикл … похоже, не зацикливается внутри этой функции…

Вот первый цикл:

 function laugh(num) {
  var laugh = "ha";
  for (var i=0; i<=num; i  ){
     laugh;
  }
  return laugh   "!";
}
console.log(laugh(3)); 
  

А вот и второй:

 function laugh(num) {
  var string = "";
  var laugh = "ha";
  for (var i=1; i<=num; i  ){
     string  = laugh;
  }
  return string   "!";
}
console.log(laugh(3));
  

Первый возвращает «ха!», в то время как второй возвращает правильное количество ha …что означает «хахаха!»

почему добавление пустой строки заставляет его работать? Кстати, новичок…Я действительно не хочу переходить к следующему уроку, пока полностью не пойму, что происходит. Большое спасибо!

Ответ №1:

Это потому, что все, что вы делаете в первом цикле, — это оператор:

 laugh;
//Equivalent to
"ha";
  

Во втором цикле вы объединяете новую строку в string :

 string  = laugh;
  

Вам нужно выполнить эту конкатенацию, иначе она вернет только ha! :

 function laugh(num) {
  var laugh = "ha";
  for (var i = 0; i <= num; i  ) {
    laugh  = "ha";
  }
  return laugh   "!";
}
console.log(laugh(3));