我的 JavaScript 脚本中可能出现哪三种类型的错误?

javascriptweb developmentfront end technology更新于 2024/8/18 12:47:00

在本教程中,我们将讨论 JavaScript 代码中可能出现的三种类型的错误。

错误是阻止程序执行的语句。在程序编译期间,可能会发生三种类型的错误。这些是语法错误、运行时错误和逻辑错误。

语法错误

语法错误是常见错误。语法不正确会导致代码解释期间出现解析问题。例如,在对象声明中添加分号而不是冒号。语法错误仅影响相应的代码线程。其余代码按原样工作。

语法错误是语法错误的根本原因。不正确的 JSON 对象解析是运行时从 ajax 响应发生的语法错误。

当 JavaScript 引擎无法理解我们的代码时,就会发生语法错误。运行代码之前有三个步骤。

首先,代码标记化通过将代码分解成小单元来进行。标记化阶段对数字、关键字、文字和运算符进行分类。

下一个阶段是解析。在这里它生成 AST 或代码结构的抽象表示。

当发生语法错误时,代码不会更改为机器代码。

我们可以快速跟踪语法错误,因为编译器会使用行号跟踪错误。

let jsonObj =
{
    name; 'Egan' //这里的分号是语法错误
}

示例

在此示例中,我们犯了分号放错位置的错误。我们在控制台中获得了带有行号的错误跟踪。因为我们有一个 onerror 处理程序,所以我们看到了"函数未声明"的意外错误。该错误是由于语法错误造成的。

<html> <head> <script type = "text/javascript"> window.onerror = function(e) { syntErrOp.innerHTML = e; }; </script> <script type="text/javascript"> function getSyntErr() { var syntErrBtnWrap = document.getElementById("syntErrBtnWrap"); var syntErrOp = document.getElementById("syntErrOp"); let jsonObj = { name; 'Egan' } } </script> </head> <body> <div id="syntErrBtnWrap"> <p>Click the button to see the error</p> <button onclick="getSyntErr()">Click Me</button> </div> <div id="syntErrOp"></div> </body> </html>

运行时错误

运行时错误发生在编译器解释之后。运行时错误的另一个名称是异常。例如,调用未声明的函数。运行时错误会阻止程序执行。我们可以使用 try-catch 块来处理这些异常。类型错误和范围错误属于运行时错误。

除以零和访问不可用的内存是运行时错误的示例

callUndefined();
//无函数声明

示例

在此示例中,我们制造了"函数未声明"错误。我们在控制台中获取带有行号的错误跟踪。因为我们有一个 onerror 处理程序,所以我们看到相同的"函数未声明"错误。

<html> <head> <script type = "text/javascript"> window.onerror = function(e) { runTimeErrOp.innerHTML = e; }; </script> <script type = "text/javascript"> function getRunTimeErr() { var runTimeErrBtnWrap = document.getElementById("runTimeErrBtnWrap"); var runTimeErrOp = document.getElementById("runTimeErrOp"); callUndeclare(); } </script> </head> <body> <h2>Runtime error in JavaScript</i></h2> <div id="runTimeErrBtnWrap"> <p>Click the button to see the error</p> <button onclick="getRunTimeErr()">Click Me</button> </div> <div id = "runTimeErrOp"> </div> </body> </html>

逻辑错误

开发人员需要使用智力和推理技能来追踪逻辑错误。这些错误发生在代码流中。例如,假设 x 大于 y。但我们得到的输出是 y 大于 x。所以这是代码逻辑上的错误。

使用无限循环就是逻辑错误的一个例子。当开发人员对变量使用感到困惑时,就会出现逻辑错误。开发人员必须小心程序的算法,以避免逻辑错误。

示例

在此示例中,我们减去两个数字而不是将它们相加,并将减法结果显示为数字的总和。减法而不是将两个数字相加绝对是开发人员的逻辑错误。

<html> <head> <script type = "text/javascript"> function getlogicErr() { var logicErrBtnWrap = document.getElementById("logicErrBtnWrap"); var logicErrOp = document.getElementById("logicErrOp"); var num1 = 10, num2 = 5, sum; sum = num1 - num2; logicErrOp.innerHTML = num1 + " + " + num2 + " = " + sum; } </script> </head> <body> <h2>Logical error in JavaScript</i></h2> <div id = "logicErrBtnWrap"> <p>Click the button to see the error</p> <button onclick = "getlogicErr()">Click Me</button> </div> <div id = "logicErrOp"> </div> </body> </html>

在本教程中,我们发现了 JavaScript 中的三种错误类型。简而言之,我们可以通过遵循良好的编码习惯来防止各种错误。当然,也有例外情况。在这种情况下,我们无法避免出现错误。在这种情况下,我们可以假设错误的可能性并使用错误处理程序来跟踪它们。


相关文章