有人能解释一下为什么会这样:
<html>
<head></head>
<body>
<script>
try {
document.attribute-withminus = 5;
}
catch(e) {
alert('something went wrong');
}
alert('ok');
</script>
</body>
</html>
不会给我一个警告'出错了'而且也没有'ok'警告吗?
它在chrome中运行良好。但是在Firefox中,它只是退出(它确实在Web控制台中显示错误)。 try-catch的重点是确保如果我输错了,它应该给我一个警告说。我不想让Web控制台一直打开。
另外,我知道这里有什么问题(减号属性;应该使用setAttribute)。我问为什么我的错误没有被发现。
答案 0 :(得分:4)
document.attribute-withminus = 5;
是语法错误(可能类似“在分配中无效的左手部分”),它是early error,而不是运行时< / em>错误。
浏览器不应该执行包含它的脚本,它应该在任何评估之前在编译包含错误的代码时立即停止并报告错误。在大多数浏览器中,脚本将在到达try
子句之前完全编译。它适用于Chrome,因为Chrome会延迟编译,直到需要内部阻止。