一.Promise入门准备阶段

1.区别实例对象呵函数对象

  • 实例对象: new 函数产生的对象,称为实例对象,简称为对象
  • 函数对象:将函数作为对象使用时,简称为函数对象
function F() { //F函数
}
const f = new F()	//F是构造函数,f是实例对象,简称为对象
console.log(F.prototype)	//F是函数对象
F.call({})	//F是函数对象
$("#root")	//jQuery函数
$.get('./test')	  //jQuery函数对象

2.两种类型的回调函数(同步与异步)

2.1 同步回调

  • 理解:立即执行,完全执行完了才结束,不会放入回调队列中

  • 例子:数组遍历相关的回调函数 / Promise的excutor函数

const arr = [1, 2, 3];
arr.forEach(item => {  //遍历回调,同步回调函数,不会放入队列,一上来就执行
    console.log(item);
});
console.log("forEach()之后");

2.2 异步回调

  • 理解:不会立即执行,会放入回调队列中将来执行
  • 例子:定时器回调 / ajax回调 / Promise的成功|失败的回调
setTimeout( () => {  //异步回调函数,会放入队列中将来执行
    console.log("timeout callback()");
}, 0);
console.log("setTimeout()之后");

3.JS的error处理

3.1 错误的类型

  • Error:所有错误的父类型

  • ReferenceError:引用的变量不存在

  • TypeError:数据类型不正确的错误

  • RangeError:数据值不在其所允许的范围内

  • SyntaxError:语法错误

 // 常见的内置错误
 // 1.ReferenceError:引用的变量不存在
 console.1og(a) // ReferenceError: a is not defined
 console.log('-----')// 没有捕获error,下面的代码不会执行
 // 2.TypeErron: 数据类型不正确的错误
 let b
 console.1og(b.xxx) // TypeError: Cannot read property "XXX" of undefined
 b=0
 b.xxx()// TypeError:b.xxx is not a function
 // 3.RangeError: 数据值不在其所允许的范围内
 function fn(){
 	fn()
 }
 fn() // RangeError:Maximum call stack size exceeded
 // 4.SyntaxError:语法错误
 const c ="""" // SyntaxError:Unexpected string

3.2 错误处理与错误对象

错误处理:

  • 捕获错误: try … catch

  • 抛出错误:throw error

错误对象:

  • message属性:错误相关信息
  • stack属性:函数调用栈记录信息
    在捕获错误时进入调试模式,可以看到:
    1
// 错误处理
// 捕获错误:try ...catch
try {
	let d;
	console.log(d.xxx);
} catch (error) {
	console.log(error);
	console.log(error.message)
	console.log(error.stack)
}
console.1og('出错之后');

// 抛出错误:throw error
function something() {
	if(Date.now(%2===1) {
		console.1og('当前时间为奇数,可以执行任务');
	}
	else {
		throw new Error('当前时间为偶数无法执行任务')//传入message
	}
}
// 捕获处理异常
try  {
	something()
} catch (error) {
	alert(error.message)
}
posted @ 2020-07-07 21:51  clienter  阅读(68)  评论(0)    收藏  举报