16
2020
07

介绍下 promise.all

  Promise.all()方法将多个Promise实例包装成一个Promise对象(p),接受一个数组(p1,p2,p3)作为参数,数组中不一定需要都是Promise对象,但是一定具有Iterator接口,如果不是的话,就会调用Promise.resolve将其转化为Promise对象之后再进行处理。      使用Promise.all()生成的Promise对象(p)的状态是由数组中的Promise对象(p1,p2,p3)决定的。如果所有的Prom
16
2020
07

js 执行机制、事件循环

  JavaScript 语言的一大特点就是单线程,同一个时间只能做一件事。单线程就意味着,所有任务需要排队,前一个任务结束,才会执行后一个任务。如果前一个任务耗时很长,后一个任务就不得不一直等着。JavaScript 语言的设计者意识到这个问题,将所有任务分成两种,一种是同步任务(synchronous),另一种是异步任务(asynchronous),在所有同步任务执行完之前,任何的异步任务是不会执行的。      当我们打开网站时,网页的渲染过程就是一
16
2020
07

DOM 事件有哪些阶段?谈谈对事件代理的理解

分为三大阶段:捕获阶段--目标阶段--冒泡阶段事件代理简单说就是:事件不直接绑定到某元素上,而是绑定到该元素的父元素上,进行触发事件操作时(例如'click'),再通过条件判断,执行事件触发后的语句(例如'alert(e.target.innerHTML)')好处:(1)使代码更简洁;(2)节省内存开销
16
2020
07

数组去重的方法

1.ES6 的 Setlet arr = [1,1,2,3,4,5,5,6]let arr2 = [...new Set(arr)]2.reduce()let arr = [1,1,2,3,4,5,5,6]let arr2 = arr.reduce(function(ar,cur) {  if(!ar.includes(cur)) {    ar.push(cur)  }  return ar},[])3.filter()// 这种方法会有一个问
16
2020
07

闭包的概念?优缺点?

闭包的概念:闭包就是能读取其他函数内部变量的函数。优点:避免全局变量的污染希望一个变量长期存储在内存中(缓存变量)缺点:内存泄露(消耗)常驻内存,增加内存使用量
16
2020
07

ES5 和 ES6 分别几种方式声明变量

ES5 有俩种:var 和 functionES6 有六种:增加四种,let、const、class 和 import注意:let、const、class声明的全局变量再也不会和全局对象的属性挂钩
16
2020
07

判断 js 类型的方式

1. typeof可以判断出'string','number','boolean','undefined','symbol'但判断 typeof(null) 时值为 'object'; 判断数组和对象时值均为 'object'2. instanceof原理是 构造函数的 prototype 属性是否出现在对象的原型链中的任何位置function A() {}let a = new A(
15
2020
05

可视区的大小:

(1)innerXXX(不兼容ie)window.innerHeight 可视区高度,包含滚动条宽度window.innerWidth 可视区宽度,包含滚动条宽度(2)document.documentElement.clientXXX(兼容ie)document.documentElement.clientWidth可视区宽度,不包含滚动条宽度document.documentElement.clientHeight可视区高度,不包含滚动条宽度
15
2020
05

”==”和“===”的不同

答案:前者会自动转换类型,再判断是否相等后者不会自动类型转换,直接去比较
14
2020
04

对象的原型链组成?

原型链:   function A() {};   const a = new A();   a.__proto__===A.prototype?console.log('true'):console.log('false');//true   console.log(A.prototype); // {constructor:f}   A.prototype.ge