前提准备:

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

1 Function Fn(){}; 大写的默认是构造函数。 

const fn = new Fn(); 加new调用,Fn被称为:构造函数。fn被称为:实例对象(对象)

 

括号左边是函数。点的左边是对象。

2 Fn.call(); Fn是函数对象

$('#test')  jq实例函数。

$.get('/test');jq函数对象。

a.b.c()。 a()[0]()。括号左边肯定是个函数。[]中括号左边就是数组。

 

2. 两种类型的回调函数。

回调函数定义:

1 是我定义(setTimeout就不是)。2 我没有调。函数+()就是执行。3会执行。

2.同步回调:

  arr.forEach( item => { console.log(item)} )

  console.log(arr)

   =>{}同步回调函数。

3.异步回调:

  setTimeout( () =>{console.log('')},0) 

  console.log('1');

  =>{}异步回调函数,放在队列中来执行

 

3. JS的error处理

1.错误类型: Error:所有错误的父类型

  1. ReferenceError:引用的变量不存在。reference引用。console.log(a)

  2.TypeError:数据类型不正确的错误。 consloe.log(undefine.xxx);cannot read property 'xx' of undefind; 不能读取underlifin的属性xx。

  3.RangeError:function fn(){};递归调用。会产生死循环。Max

  4.Syntax 语法错误。

2.

捕获错误:try catch 

抛出错误:throw error。系统通知的方式。

2.错误处理

3.错误对象

 

 

二。promise使用

1抽象理解: promise是什么JS异步编程的解决方法(之前的方案是什么呢?)

2 具体表达:语法上promise是一个构造函数。功能上:promise对象可以封装一个异步操作,并且异步操作的获取结果。

2+2+1 

2 个问题超过面试官的准备。

2 个和其他人差不多。

1 个啥也不知道。

 

2 为什么

3 如何用