Почему не работает цикл в задание "Великий дешифровщик"?


#1

for(var i = 0; i < encodedMessage.length; i++ ) {

Если элемент encodedMessage со смещением превышает длину массива символов
if((encodedMessage[i] + shift) > symbols.length) {

То symbolIndex будет равен разности encodedMessage и symbols.length
var symbolIndex = encodedMessage[(i + shift) - symbols.length];

} else {

Либо же элементу encodedMessage со смещением на shift
symbolIndex = encodedMessage[i + shift];
}

Далее склеивается сообщение из символов.
var symbol = symbols[symbolIndex];
decodedMessage += symbol;
}


#2

Сделал чуть иначе, создав отдельную переменную index, всё заработало, хотя логика та же.

for(var i = 0; i < encodedMessage.length; i++ ) {
var index = encodedMessage[i] + shift;
if(index > symbols.length) {
index -= symbols.length;
symbol = symbols[index];
} else {
symbol = symbols[index];
}

decodedMessage += symbol;
}