Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么调用丢失的函数时会发现错误,而不是错误的语句?_Javascript - Fatal编程技术网

Javascript 为什么调用丢失的函数时会发现错误,而不是错误的语句?

Javascript 为什么调用丢失的函数时会发现错误,而不是错误的语句?,javascript,Javascript,请参阅此代码: <!DOCTYPE html> <html> <body> <p id="P1"></p> <script> try { alllllllert("Hello.........!"); } catch(err) { document.getElementById("P1").innerHTML = err.message; } </script> </body>

请参阅此代码:

<!DOCTYPE html>
<html>
<body>

<p id="P1"></p>

<script>
try {
    alllllllert("Hello.........!");
}
catch(err) {
    document.getElementById("P1").innerHTML = err.message;
}
</script>

</body>
</html>
当这个代码运行时,一个错误是caugth,我进入catch块

但是,以下代码中为什么没有出现这种情况:

<!DOCTYPE html>
<html>
<body>

<p id="P1"></p>

<script>
try {
    int n = 3;
    document.getElementById("P1").innerHTML = n;

}
catch(err) {
    document.getElementById("P1").innerHTML = err.message;

}
</script>

</body>
</html>
编写int n=3无法在JavaScript上编译,我知道我需要编写var n=3。那么,为什么我不得到一个带有消息的异常呢?

intn=3;无效语法,这会阻止对整个块进行分析

因此,您的catch块实际上并不存在。

int n=3;无效语法,这会阻止对整个块进行分析


因此,您的catch块实际上并不存在。

区别在于,在第一个示例中,alllllerthello。。。。。。。。。!;,您实际上拥有有效的JavaScript。这使得它成为一个运行时异常,因为代码仍然被正确解析,并且直到引擎实际尝试定位要调用的函数时才发现错误


第二个例子,int n=3;根本不是有效的JavaScript。这会导致解析器在运行代码之前吐出并抛出错误。Try/catch是只能捕获运行时错误的运行时构造。

区别在于,在第一个示例中,alllllerthello。。。。。。。。。!;,您实际上拥有有效的JavaScript。这使得它成为一个运行时异常,因为代码仍然被正确解析,并且直到引擎实际尝试定位要调用的函数时才发现错误


第二个例子,int n=3;根本不是有效的JavaScript。这会导致解析器在运行代码之前吐出并抛出错误。Try/catch是只能捕获运行时错误的运行时构造。

因为存在语法错误。代码甚至无法执行。想想这个比喻:为什么当我的汽车没有发动机时,发动机控制灯不闪烁?如果没有引擎,你甚至不能启动汽车,所以灯永远不会亮。因为语法错误不是异常,而是语法错误。因为运行时异常与编译器错误不同?因为你有语法错误。代码甚至无法执行。想想这个比喻:为什么当我的汽车没有发动机时,发动机控制灯不闪烁?如果没有引擎,你甚至不能启动汽车,所以灯永远不会亮。因为语法错误不是异常,而是语法错误。因为运行时异常与编译器错误不同?