什么是回调地狱,如何解决?
回调地狱就是为了实现代码顺序执行的一种操作,它会让这个代码的可读性非常差,不好维护。
那么我们可以Promise来解决这个问题,Promise是一种异步编程的解决方案。
1.Promise构造函数接收一个函数作为参数,我们需要处理的异步任务就卸载该函数体内,该函数的两个参数是resolve,reject。异步任务执行成功时调用resolve函数返回结果,反之调用reject。
2.Promise对象的then方法用来接收处理成功时响应的数据,catch方法用来接收处理失败时相应的数据。
3.Promise的链式编程可以保证代码的执行顺序,前提是每一次在than做完处理后,一定要return一个Promise对象,这样才能在下一次then时接收到数据。
async/await
还有另外一种异步编程的解决方案就是async await,用法就是如果一个函数前面写了async,就表明这个函数是一个异步,不会阻塞后面函数的执行。然后如果你去打印这个函数的返回值时,其实是一个Promise对象。所以我们可以在这个函数后面使用.then,.catch的方法。然后await关键字只能在async定义的函数中使用,await后面一般是跟一个Promise实例对象,并且可以拿到这个实例中resolve的数据。然后必须等await后面这一步成功之后才会继续走下面的代码,这样就保证了代码的执行顺序。
移动端适配
1.视口适配:通过meta标签设置name属性为viewport
2.媒体查询适配:当屏幕宽度满足什么条件时使用什么样式
3.使用js来适配:获取屏幕的宽度然后修改样式
4.Rem适配
This指向
this指向:指向调用者,默认是指向window,但是箭头函数的this是外层上下文的this
微任务和宏任务
Js是单线程的,如果遇到异步的任务会交给浏览器处理
主线程要执行的代码=宏任务
定时器/延时器=宏任务
只有上一个宏任务执行完才会执行下一个宏任务
微任务就是promise .then .catch需要执行的内容
在事件循环队列中,微任务会插队
谈一谈keep-alive这个组件的实现原理
我们如何在vue项目中应用我们的权限
谈一谈在vue项目中如何去做我们的导航守卫
描述一下document.load和document.ready之间的一个区别
Js如何检测一个字符串的类型
如何检测一个变量是string类型
==和===的区别
什么是事件委托 事件冒泡
Js new操作符到底做了什么事情
Js如何实现继承以及他的优缺点
什么叫原型 原型链
描述一下什么叫作用域 作用域链
描述一下我们的浏览器缓存,服务器缓存和cdn缓存
描述一下你对闭包的理解以及优缺点,以及闭包所引起的内存泄露的解决方案
那数据中如何实现代理,有哪些方式能够实现跨域通信
描述一下jsonp是如何实现跨域请求以及优缺点
什么叫值类型?什么叫引用类型?
描述一下我们前端的堆和栈