Come qualcuno abituato a C ++ e nuovo a JavaScript, trovo questo comportamento strano. Sia che un programma sia eseguito direttamente sulla piattaforma come in C ++, sia che funzioni a un livello più alto (o più profondo?) Come quelli JavaScript, concettualmente, un programma, un programma e un'eccezione sono un'eccezione. Allora perché JavaScript ha questo comportamento? La definizione JavaScript di eccezione è diversa?
Guarda questo semplice esempio.
<!doctype html>
<html>
<body>
<button id="throw">Throw Exception</button>
</body>
<script>
document.getElementById("throw").onclick = function(){
throw "Uncaught Exception";
}
</script>
</html>
Quando si fa clic sul pulsante, la console visualizza "eccezione non rilevata: eccezione non rilevata" come previsto. Tuttavia, facendo nuovamente clic sul pulsante anche dopo, viene generata un'eccezione, ovvero l'esecuzione dello script non è bloccata. Se fosse stato C ++, il programma sarebbe finito. Il fatto che funzioni all'interno di un browser non dovrebbe avere importanza perché il browser può semplicemente interrompere lo script e avvisare l'utente; dopotutto, il browser si comporta come la piattaforma dello script.
Voglio sapere la ragione di questo.
Esiste un tipo di libro "The Design and Evolution of JavaScript" in cui possiamo capire perché le cose sono come sono?