前端鄙视题

1.什么是闭包,为什么要使用闭包?

闭包就是能够读取其他函数内部变量的函数;闭包可以读取函数内部的变量,可以让变量的值始终保持在内存中。

2.解析事件委托?

事件委托,也叫事件代理,通俗地来讲,就是把一个元素响应事件(click、keydown......)的函数委托到另一个元素;

举个例子,比如一个宿舍的同学同时快递到了,一种方法就是他们都傻傻地一个个去领取,还有一种方法就是把这件事情委托给宿舍长,让一个人出去拿好所有快递,然后再根据收件人一一分发给每个宿舍同学;

在这里,取快递就是一个事件,每个同学指的是需要响应事件的 DOM 元素,而出去统一领取快递的宿舍长就是代理的元素,所以真正绑定事件的是这个元素,按照收件人分发快递的过程就是在事件执行中,需要判断当前响应的事件应该匹配到被代理元素中的哪一个或者

哪几个。

委托的优点:1. 减少内存消耗 2. 动态绑定事件

3.谈谈this对象的理解?

this表示当前对象,this的指向是根据调用的上下文来决定的,默认指向window对象,指向window对象时可以省略不写;

对象函数调用,哪个对象调用就指向哪个对象;

使用 new 实例化对象,在构造函数中的this指向实例化对象;

使用call或apply改变this的指向。

4.如何解决ajax回调地狱问题?

首先关于回调地狱,就是函数层层嵌套,后面的函数必须等前面函数完成才能执行,代码会变得非常冗杂!

异步编程作为JavaScript中的一部分,具有非常重要的位置,它帮助我们避免同步代码带来的线程阻塞的同时,也为编码与阅读带来了一定的困难。过多的回调嵌套很容易会让我们陷入“回调地狱”中,使代码变成一团乱麻。为了解决“回调地狱”,我们可以使用文中所述的这五种常用方法:

  • function拆解
  • 事件发布/订阅模式
  • Promise
  • Generator
  • async / await

5.谈谈你对es6的理解?

es6是一个新的标准,它包含了许多新的语言特性和库,是JS最实质性的一次升级。
比如’箭头函数’、’字符串模板’、’generators(生成器)’、’async/await’、’解构赋值’、’class’等等,还有就是引入module模块的概念。

 

posted @ 2018-04-12 13:08  给你一个眼神  阅读(227)  评论(0编辑  收藏  举报