那些有答案的面试题(2)

讲一讲this的指向问题?

  1. 全局变量的this是指向window的 setTimeout,setInterval的this也指向window
  2. 箭头函数的this指向它的上文 ES6中this为undefined
  3. 事件函数的this指向调用该事件的事件源
  4. 对象的this指向当前对象
  5. 使用apply,call可以改变this的指向
  6. bind可以new一个新的对象出来指向this
  7. 也可以用var that=this 更改this的指向

async和await、promise的区别?这两个的本质?

async和await是promise的语法糖,promise其实一个容器 里面有异步数据处理的结果,promis返回的是一个对象

promise中 提供了两个函数

  1. resolve pending到成功 -----具体执行在then中
  2. reject pending到失败状态 ----在catch中执行
  3. 这样可以将回调函数变为链式结构 解决回调地狱的问题

async和await 是对promise的优化

可以将异步代码写的和同步代码一样

promise

  1. promise可以将then中的promise的then放在外面操作
  2. 也就是说 如果then中返回一个promise对象 这个返回的promise的then可以跟在外面的then后面,形成链式结构
  3. promise解决回调地狱
  4. 但是这一串链式不可分割 还是有一定缺陷

async await

  1. es7提供了一个回调地狱的终极解决方案

  2. async用来修饰函数 代表这是一个异步处理 加在整个函数前面

  3. await 后面跟着promise对象 修饰promise对象

  4. //假如赋值给一个变量 可以返回promise执行的结果
    var res= await new Promise(function(resolve,seject){
        Ajax({
            url:"cityID.php",
            data:{
                name:"南宁区"
            },
            methods:"post",
            success:function(res){
            resolve(res)
        },
    
    	})
     console.log(res)
    })
    
    var res1= 后面和上面一个 这样就没有嵌套了
    
    

解释一下柯里化函数,能不能一个demo?

谈谈js中的变量提升?

​ ES5中使用var定义变量的时候回存在变量提升 浏览器在解析js的时候分为两步

​ 一步是创建变量 初始化变量等 第二步才是赋值调用函数开始渲染

​ 这个时候就是变量提升

用过Service worker吗?用来干嘛?

  1. 如何降低一个页面的网络请求成本从而缩短页面加载资源的时间并降低用户可感知的延时是非常重要的一部分。
  2. 对于提升应用的加载速度常用的手段有Http Cache、异步加载、304缓存、文件压缩、CDN、CSS Sprite、开启GZIP等等。
  3. 这些手段无非是在做一件事情,就是让资源更快速的下载到浏览器端。但是除了这些方法,其实还有更加强大的Service Worker线程。
  4. 用Service Worker做一做PC浏览器的缓存了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值