在JavaScript编程中主要有三种类型的错误,分别为:语法错误,运行时错误,以及逻辑错误。
下面我们来看看在编译是会发现的JavaScript错误是什么?
一、语法错误(Syntax Errors)
语法错误,也称为解析错误,会发生在传统编程语言的编译和JavaScript的解析时。
例1,以下行导致语法错误,因为它缺少右括号。
<script type="text/javascript"> // window.print(; </script>
例2:
123consloe.log(123) // 未捕获的语法错误:意外标识符 console.123) // 未捕获的语法错误: 出乎意料的数字
当JavaScript中出现语法错误时,只有与语法错误包含在同一线程中的代码才会受到影响,而其他线程中的其余代码将被执行,假设它们中的任何内容都不依赖于包含错误的代码。
二、运行时错误(Runtime Errors)
运行时错误(也称为异常)是在JavaScript执行期间(编译/解释之后)发生的错误。
1、引用错误(ReferenceError)
ReferenceError:引用一个不存在的变量时发生的错误;将一个值分配给无法分配的对象,比如对函数的运行结果或者函数赋值就会发生的错误。
例如下面的情况:
// 引用了不存在的变量 a() // 未定义引用错误:a 未定义 console.log(b) // 未引用引用错误:b未定义 // 给一个无法被赋值的对象赋值 console.log("abc") = 1 // 未引用引用错误:左侧赋值无效2、范围错误(RangeError)
RangeError:是一个在超出有效范围时会发生的错误。主要有以下几种情况:
1)、当数组长度为负数时,发生错误;
2)、当Number对象的方法参数超出范围时,发生错误;
3)、当函数堆栈超过最大值时,发生错误。
例如下面的情况:
// 数组长度为负数 [].length = -5 // 范围错误:无效的数组长度 // Number对象的方法参数超出范围 var num = new Number(12.34) console.log(num.toFixed(-1)) // 范围错误: 在Number.toFixed中,toFixEd()的数字参数必须在0到20之间。 // 说明: toFixed方法的作用是将数字四舍五入为指定小数位数的数字,参数是小数点后的位数,范围为0-20.3、类型错误( TypeError)
TypeError:变量或参数不是预期类型时发生的错误。
例:在使用new字符串、布尔值等原始类型和调用对象不存在的方法就会抛出这种错误,因为new命令的参数应该是一个构造函数。
// 调用不存在的方法 123() // 类型错误: 123不是一个函数 var o = {} o.run() // 类型错误: o.run 不是一个函数 // new关键字后接基本类型 var p = new 456 // 类型错误: 456 不是构造函数4、URIError:URL相关函数错误使用
URIError:主要是URL相关函数的参数不正确。
例如下面的情况:
decodeURI("%1") // URIError: 在解码过程中变形了的URIURI相关参数不正确时抛出的错误,主要涉及以下六个函数:
encodeURI、decodeURI()、encodeURIComponent()、decodeURIComponent()、escape()和unescape()
5、EvalError:eval()函数执行错误
EvalError:在ES5以下的JavaScript中,当eval()函数没有被正确执行时,会抛出evalError错误。
例如下面的情况:
var myEval = eval; myEval("alert('call eval')");需要注意的是:ES5以上的JavaScript中已经不再抛出该错误,但依然可以通过new关键字来自定义该类型的错误提示。
三、逻辑错误
逻辑错误可能是最难追踪的错误类型。这些错误不是语法或运行时错误的结果。相反,当你在驱动你的脚本的逻辑中犯了错误并且你没有得到你期望的结果时,它们会发生。
总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。
以上就是JavaScript编程中会出现的错误类型有哪些?错误类型介绍的详细内容,更多请关注php中文网其它相关文章!
网站建设是一个广义的术语,涵盖了许多不同的技能和学科中所使用的生产和维护的网站。
……