常见的内置错误
- ReferenceError 引用的变量不存在
- TypeError 数据类型不正确的错误
- RangeError 数据值不在其所允许的范围内
- SyntaxError 语法错误
错误处理
- 捕获错误 try...catch
try{
} catch(error){
// error 有message和stack属性
messgae: 错误相关信息
stack:函数调用栈记录信息
}
function getTime(){
if(Date.now()%2===1){
console.log('这是奇数')
}else{
throw new Error('这是个错误, 现在是偶数')
}
}
try{
getTime()
} catch(error){
console.log(error.message) //这是个错误, 现在是偶数
console.log(error.stack)
// Error: 这是个错误,现在是偶数
// at getTime (error.html:14)
// at error.html:19
}
- 抛出错误 throw error
promise
promise是js中进行异步编程的新的解决方案 旧的解决异步编程的方案是纯回调函数
- Promise是一个构造函数
- promise对象用来封装一个异步操作并可以获取其结果
promise的状态改变
- pending变为resolved
- pending变为rejected
- 只有这2种,且一个promise对象只能改变一次,无论变为成功还是失败,都会有一个结果数据 成功的结果数据一般称为value,失败的结果数据一般称为reason

promise的优势
- 指定回调函数的方式更加灵活 纯回调函数必须在启动异步任务前指定 promise:启动异步任务 => 返回promise对象 => 给promise对象绑定回调函数(甚至可以异步方式指定)
- 支持链式调用,可以解决回调函数地域问题 什么是回调地狱? 回调函数嵌套调用,外部回调函数异步执行的结果是嵌套的回调函数执行的条件