Передает ли forof в JS значения или ссылки?

Я пытался изменить значение во время работы с этим итератором, и когда я внес изменения, ничего не произошло, мне пришлось изменить его на нормальное для.

Это не сработало:

function spinWords(string){
  string = string.split(' ');
  for (let word of string) { //using for...of
    if (word.length >= 5) {
      let aux = [];
      for (let i=0; i<word.length; i++) {
        aux[i] = word[word.length - 1  - i];
      }
      word = aux.join('');
    }
  }
  return string.join(' ');
}

Это сработало:

function spinWords(string){
  string = string.split(' ');
  for (let j=0; j<string.length; j++) { //switched to for
    if (string[j].length >= 5) {
      let aux = [];
      for (let i=0; i<string[j].length; i++) {
        aux[i] = string[j][string[j].length - 1  - i];
      }
      string[j] = aux.join('');
    }
  }
  return string.join(' ');
}

Спасибо!


person fseitun    schedule 02.05.2021    source источник
comment
Также см. stackoverflow .com/questions/50840293/   -  person Scott Marcus    schedule 03.05.2021
comment
Не по теме. Ваш код проще: function spinWords(string){ return string.replace(/[^ ]{5,}/g, word => [...word].reverse().join("")) }   -  person Thomas    schedule 03.05.2021
comment
Спасибо @Томас! Я ненавижу Regex, ха. Я думаю, что когда-нибудь мне придется изучить его...   -  person fseitun    schedule 03.05.2021