Как перевернуть строку за пол прохода цикла?
Существует около десятка способов перевернуть строку, один из которых - рекурсия.var str = 'chupacabra';

function reverse(str) {
  if (str.length === 0) return '';

  var
    s1 = str[0],
    s = str.slice(1, str.length - 1),
    s2 = str[str.length - 1]
    
  return s2 + reverse(s) + s1
}

console.log(reverse(str))
В данном примере строка переворачивается за 5 проходов
https://jsfiddle.net/zxe296y9/1/
На вскидку, такfor(let i=(string.length-1); i>=((string.length-1) / 2); i--){
   let a = string[i]
   let b = string[string.length-1]
   let c = a
   a = b
   b = c
}
Т.е. за один оборот, меняем местами крайние элементы