网站首页 > 文章精选 正文
一、Javascript的异常处理机制
当javascript代码中出现错误的时候,js引擎就会根据js的调用栈逐级寻找对应的catch,如果没有找到相应的catch handler或catch handler本身又有error或者又抛出新的error,最后就会把这个error的处理交给浏览器,并显示在错误控制台中)显示错误信息给访问者。
二、try/catch/finally
是js提供的异常处理机制,用法如下:
try {
// 这段代码从上往下运行,其中任何一个语句抛出异常该代码块就结束运行}
catch (e) {
// 如果try代码块中抛出了异常,catch代码块中的代码就会被执行。
// e是一个局部变量,用来指向Error对象或者其他抛出的对象
}
finally {
//无论try中代码是否有异常抛出(甚至是try代码块中有return语句),
//finally代码块中始终会被执行
}
三、常见错误
3.1 syntaxError
顾名思义,典型的语法错误。
function foo{
}
if{}
Js代码是从上往下依次执行,但是js引擎先解析代码是否语法出错,如果语法都解析不通过,那么显而易见:一行代码也不会执行,从而会在控制台中输出语法报错:
3.2 变量未定义
变量未定义(也叫未声明)指的是,当程序中使用了一个未定义的变量则会报错。
如下代码:
var foo = 1
var bar = foo + n1
显而易见,n1变量是未定义的就直接使用,从而会在控制台中输出如下错误:
3.3 TypeError错误
TypeError错误指的是数据类型未正确使用。
例如一:
var foo = function(){
console.log('foo')
}
foo = 'hello world'
foo()
在某些逻辑下,foo本身存储的是函数,但是误把foo赋值了一个字符串或其它不是函数的数据类型,但是foo当作函数来调用了,则会报TypeError错误在控制台中输出:
例如二:
未正确获取元素,导致得到一个null而不是DOM节点对象后,绑定事件而引发的TypeError错误。
<script>
var oBtn = document.getElementById('btn')
//因为代码从上往下解析的原因,还未解析到button标签,返回为null。
//null是空对象,不能绑定任何属性,onclick虽然是事件,
//但也是对象中属性的一部分,所以报TypeError错误。
oBtn.onclick = function(){
console.log('bar')
}
</script>
<button id="btn">foo</button>
正确错误是把选择元素的js代码放置html标签之后,也就是紧邻 </body>标签,或放在windo.onload事件中。
<script>
window.onload = function(){
var oBtn = document.getElementById('btn')
//因为代码从上往下解析的原因,还未解析到button标签,返回为null。
//null是空对象,不能绑定任何属性,onclick虽然是事件,
//但也是对象中属性的一部分,所以报TypeError错误。
oBtn.onclick = function(){
console.log('bar')
}
}
</script>
<button id="btn">foo</button>
3.4 JSON解析错误
首先,我们需要了解JSON是什么 ?
JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。
而它的定义规则和js中字面量声明对象很像,所以很多初学者以为json就是js对象,其实这是错误的。
3.4.1 JSON 是 JS对象表示语法的子集。
- 数据在名称/值对中
- 数据由逗号分隔
- 大括号 {} 保存对象
- 中括号 [] 保存数组,数组可以包含多个对象
3.4.2 JSON 数据的书写格式是
key : value
名称/值包括字段名称(在双引号中),后面写一个冒号,然后是值:
"name" : "foo"
3.4.3 JSON 值可以是:
- 数字(整数或浮点数)
- 字符串(在双引号中)
- 逻辑值(true 或 false)
- 数组(在中括号中)
- 对象(在大括号中)
- null
前方高能~~~
谈到这里,json数据从哪来呢?
在请求Ajax的时候,会从后台服务器中拿到json数据,往往会把json解析成js对象。则前端工程师会用到JSON.parse方法。有时候前端也会定义JSON数据,如果语法不正确当转成js对象时,则会报错。如下代码:
//var foo ='{ name:"bar" }'//name未带双引号
var foo ='{ "name":bar }'//bar未带双引号
var f = JSON.parse( foo )
正确的JSON转换js对象的方式如下:
var foo ='{ "name":"bar","age":20 }'//20无需带,则理解为数值类型
var f = JSON.parse( foo )
console.log( f ) //{name: "bar", age: 20} ,此时可以正确的把json转换成js对象,
//通过 点 语法,也就是f.name和f.age访问到具体的数据
以上是JavaScript中常见的错误,后期遇到会不断更新,感谢小伙伴们的踊跃投稿和留言。
猜你喜欢
- 2025-01-20 「JavaScript 从入门到精通」18.WebApi介绍
- 2025-01-20 Js基础8:常见内容操作
- 2025-01-20 JavaScript技术:如何动态添加事件?
- 2025-01-20 JavaScript Window History
- 2025-01-20 从零开始学Vue!详解v-text、v-html、v-on、v-show、v-if
- 2025-01-20 用好电脑浏览器的这些设置,不做别人免费的挖矿机
- 2025-01-20 刷新你的认知!12 个不为人知的 JavaScript 冷知识
- 2025-01-20 HTML 标签
- 2025-01-20 JavaScript中对话框的使用
- 2025-01-20 JavaScript 关闭浏览器 (不弹出提示框)
你 发表评论:
欢迎- 02-06京东首发叮咚Play!智能音箱第二场大战,屏幕或成兵家必争之重点
- 02-06救星来了?高通将大力支持智能音箱厂商
- 02-06WPS越用越卡慢 金山公司可有体验一下?
- 02-06联想小新犀利升级 16日电商节火热开售
- 02-06平板将迎来大变,紫光展锐做好“芯”准备
- 02-06高通的第二战场:汽车、5G、IoT一年卖30亿
- 02-06起底智能音箱行业:八大芯片厂商及其代表产品大盘点
- 02-06一文读懂智能音箱产业链
- 最近发表
- 标签列表
-
- react官网 (408)
- esd文件 (378)
- 更新目录 (379)
- 数据抓取 (373)
- pip换源 (412)
- display:none (369)
- img文件怎么打开 (475)
- a标签怎么去掉下划线 (376)
- git拉取代码 (435)
- 图片代码 (411)
- user-select (415)
- 访问github (415)
- 服务主机本地系统cpu占用高 (401)
- e.target (437)
- pycharm主题 (395)
- 火狐浏览器插件 (408)
- file.exists (413)
- js文件 (425)
- ip更换 (389)
- mssql和mysql区别 (366)
- 755权限 (389)
- requesttimeout (384)
- mysql默认密码 (398)
- pcm文件 (387)
- ipython和python区别 (387)
- 最新留言
-
本文暂时没有评论,来添加一个吧(●'◡'●)