An array is always truthy (at least in JavaScript), regardless of how many elements it has, which is why your if condition runs. this.say works by converting the argument into a string ('' + [] becomes ''). The hero apparently doesn’t say anything when the string is empty. So when there are no enemies, the array is empty, so the string value is '', and the hero doesn’t say anything. If there were enemies your hero would say something like "Grot,Brak,Treg", etc.
Now, if there were actually enemies and your hero isn’t saying anything, that’s a problem.
You could try fixing this by checking enemies.length. 0 evaluates to false.
However, It would be nice to see something that indicates that there’s a value (especially since null and undefined cause problems when sometimes I just want to test if something is null/undefined).