话不多说,直接上内容。 一起来查缺补漏
0.arguments对象:
在js调用一个函数的时候,我们经常会传递
一些参数, js把传入到这个函数的全部参
数存储在一个叫arguments的东西里
(arguments对象),可以拿到全部实参,在箭头函数中没有arguments
1. Null 和 undefined 区别:
undefined代表为定义,null代表空对象. 一般变量声明了但是还没
有定义的时候使用undefined, null主要是用于赋值给一些可能返回对
象的变量,作为初始化使用。
2. ES6有哪些新增:
新增了变量的生命方式、解构赋值、模版字符串、简化对象写法、箭头函数、
函数型参默认值、rest参数、扩展运算符、新增数据类型(set、Map、Symbol
、Biglnt)、promise、async/await。
3. New操作符的实现原理/执行过程:
一、创建一个新的空对象 ,
二、设置原型,将对象的原型设置为函数的prototype对象。
三、让函数内的this指向这个对象,执行构造函数的代码,四、返回新对象
4. 什么是 DOM 和 BOM :
DOM指的是文档对象模型,它指的是把文档当作一个对象,
这个对象主要定义了,处理网页内容的方法和接口。
BOM指的是浏览器对象模型,核心是Window。指的是把浏览器当作一
个对象来对待,这个对象主要定义了与浏览器进行交互的方法和接口。
5. For ... in 和 For ...of的区别:
for ...in 遍历对象的整个原型链,性能差,
for ...of 只遍历当前对象(不会遍历原型链)
6. 数组遍历的方法:
for ...of 、forEach() 、filter()、
every()、some()、map()、find()、
findIndex()、reduce()、reduceRight().
7. 常用的forEach和map方法区别:
forEach()会针对每一个元素执行提供的函数,对数
据操作会改变原数组,该方法没有返回值。 Map()
不会改变原数组,有返回值,返回一个新数组,新数
组中的值为原数组调用函数处理后的值
8. 对原型、原型链的理解:
在javascript中使用构造函数来初始化一个对象的,
每一个构造函数的内部都有一个prototype(原型对象)
属性,它的属性是一个对象,这个对象包含了可以由
该构造函数的所有实例共享的属性和方法。当使用构
造函数新建一个对象后,在这个对象的内部将包含一个
指针,这个指针指向构造函数的prototype属性对应
的值,在ES5中这个指针被称为对象的原型。 一般来
说不应该能够获取到这个值的,但是浏览器中都实现了
__proto__ 属性来访问这个属性(prototype原型
对象),但是最好不要使用这个属性,因为它不是规范
中规定的。ES5 中新增了一个Object.getPrototy
peOf()方法,可以通过这个方法来获取对象的原型。
当访问一个对象的属性时,如果这个对象内部不存在
这个属性,那么它就会去它的原型对象里找这个属性,
这个原型 对象又会有自己的原型, 于是就这样一直
找下去,也就是原型链的概念。 原型链的尽头一般
来说都是Object.prototype (null除外)
9. JS执行机制:
Js是单线程,同一时间只能做一件事。先执行执行
栈中的同步任务,异步任务(回调函数)放入任务队列
中一旦执行栈中的所有同步任务执行完毕,系统会按序
取任务对立中的异步任务,于是被读取的异步任务结束
等待状态,进入执行栈,开始执行。 同步:同步
任务都在主流程上执行,形成一个执行栈(宏任务)。
异步:JS的异步是通过回调函数实现的。 异步任务相
关回调函数添加到任务队列中(任务队列也称消息队列)。
一般说,异步任务有三种类型:1.普通事件,如click,
resize,2.资源加载,如load,error等,3.定时器
,包括setTimeout、setInterval等。
10. 什么是回调函数? 回调函数有什么缺点? 如何解决回调地狱问题?:
1.回调函数概念:回调函数是一个作为变量传递给另
一个函数的函数,它在主题函数执行完之后执行。
2.回调函数特点:你定义的,你没有调用,但是最终
执行了。 缺点: 容易写出回调地狱,嵌套函数存
在耦合性,一旦有所改动,就会牵扯一发而全身。嵌
套函数一多,就难处理错误。 不能使用try catch
捕获错误,不能使用return 。 常用的回调函数:
DOM事件回调函数、定时器回调函数、ajax请求回调
、生命周期回调函数。 解决回调函数:promise
、async/await、generator。