Executando verificação de segurança...
2

Em JavaScript, seria similar à outras apresentadas, aproveitando o método repeat, que repete uma string várias vezes:

var height;
while (true) {
    height = parseInt(prompt('Digite a altura:'));
    if (1 <= height && height <= 8) {
        break;
    } else {
        console.log('Altura deve ser um número entre 1 e 8'); // pode usar alert em vez de console.log
    }
}

for (var i = 1; i <= height; i++) {
    console.log(' '.repeat(height - i) + '#'.repeat(i));
}

Para ler o número, estou levando em conta que está rodando em um browser, pois uso prompt para obter a entrada do usuário. Se estiver rodando em outro ambiente (por exemplo, Node na linha de comando), pode usar outras alternativas.

Vale lembrar que o código acima dá a mesma mensagem caso o número esteja fora da faixa entre 1 e 8, ou se não for digitado um número (por exemplo, "xyz"). Mas se quiser separar as mensagens, pode fazer:

var height;
while (true) {
    height = parseInt(prompt('Digite a altura:'));
    if (isNaN(height)) { // se não digitar um número (por exemplo, "xyz"), cai aqui nesse if
        console.log('Você não digitou um número válido')
    } else if (1 <= height && height <= 8) {
        break; // número entre 1 e 8, sai do while
    } else { // se número estiver fora do intervalo, cai aqui no else
        console.log('Altura deve ser um número entre 1 e 8'); // pode usar alert em vez de console.log
    }
}
Carregando publicação patrocinada...