Индексом единым?

JavaScript. Задача состояла в том, что б слова из строки 5ти букв и больше функция перекручивала наоборот. Например строку: in god we trust должно превратить в in god we tsurt
Был написан такой код:

 function spinWords(str){
      str = str.split(' ');
      for (let word of str){
        if (word.length > 4) {
         word = word.split('').reverse().join('')
        }
      }
       return str.join(' ')
    }

Главный вопрос: почему он не работает? причем его аналог с индексацией работает отлично.
Вот рабочий код с индексами:

function spinWords(str){
      str = str.split(' ');
      for (let i=0; i<str.length; i++){
        if (str[i].length > 4) {
         str[i] = str[i].split('').reverse().join('')
        }
      }
       return str.join(' ')
    }

Ответы (1 шт):

Автор решения: teran

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

const txt = "in god we trust";

let result = txt.split(' ')
                .map(w => w.length < 5 ? w : w.split('').reverse().join(''))
                .join(' ');
                
console.log(result);                

→ Ссылка