O erro está no "<=", na condição para execução do loop, pois na medida que vai implementando "i++" quando chega em "i = 4", ele passa na condição de "i <= letras.length", contudo na hora de emitir o alerta, não tem o elemento "i = 4", pois só vai até "i = 3" que é a letra "D" e por isso o programa roda "undefined". O código correto seria com o "<" só.
var letras = ['A', 'B', 'C', 'D'];
for( var i = 0; i <= letras.length; i++ ) {
alert(letras[i]);
}
//correção
var letras = ['A', 'B', 'C', 'D'];
for( var i = 0; i < letras.length; i++ ) {
alert(letras[i]);
}