js面试题学习整理
1. 异步操作有哪些?
回调函数,事件监听,promise,ajax,async,setTimeout,Generator
2. Promise是什么?
Promise是异步编程的一种解决方案。
从语法上讲,promise是一个对象,通过它可以获取异步操作的消息;
从本意上讲,它是承诺,承诺它过一段时间会给你一个结果。
promise有三种状态:pending(等待态),fulfiled(成功态),rejected(失败态);状态一旦改变,就不会再变化。创造promise实例后,就会立即执行。
处理问题:
·回调地狱,代码难以维护,常常第一个的函数输出是第二个函数的输入这种现象;
·promise可以支持多个并发请求,获取并发请求中的数据;
·promise可以解决异步的问题,本身并不能说promise是异步的。
Promise是一个构造函数,自身有all,reject,resolve这几个方法,原型上有then,catch等方法。
Promise的构造函数接收一个参数:函数,并且这个函数需要传入两个参数:
resolve: 异步操作执行成功后的回调函数。
reject:异步操作执行失败后的回调函数。
then: 传递状态的方式来使得回调函数能够及时被调用。
catch: 指定reject的回调,或者在执行resolve时,如果抛出异常,并不会报错卡死js,而是会进到这个catch方法中。
all: 谁跑得慢,以谁为准执行回调。all接受一个数组参数,里面的值最终都会返回Promise对象。提供了并行执行异步操作的能力,并且在所有异步操作执行完成后才执行回调。
race: 谁跑的快,以谁为准执行回调。
3. forEach(),map(),filter()的区别:
forEach():
· 遍历数组,调用数组的每个元素,利用回调函数对数组进行操作,本质上等同于for循环;
· forEach会改变原数组。没有返回值;
· 不支持 continue 和 break;
· return只能跳出当前循环。
map():
· 遍历数组,调用数组的每个元素,利用回调函数对数组进行操作,与forEach类似;
· map是返回一个新数组,原数组不变,新数组的索引结构和原数组一致;
· map需要return返回值。
filter():
· 遍历数组,返回一个新数组(原数组的子集),回调函数用于逻辑判断;
· 回调函数为 true 则将当前元素添加到新数组中,false则跳过;
·不会改变原数组。
4. 事件委托/事件代理:
· 利用冒泡机制,将子元素的事件委托给父元素去监听(给父元素添加事件),当子元素触发事件时,事件冒泡到父级。如果希望指定的子元素才能触发事件,可以通过事件对象(event)获得事件源(target),然后通过条件判断是不是期望的子元素,如果是的话,执行事件,否则不执行事件。
· 事件委托的好处:
1.实现对未来元素事件的绑定;
2.减少事件绑定,提高性能。
js面试题学习整理的更多相关文章
- vue.js面试题整理
Vue.js面试题整理 一.什么是MVVM? MVVM是Model-View-ViewModel的缩写.MVVM是一种设计思想.Model 层代表数据模型,也可以在Model中定义数据修改和操作的业务 ...
- 【前端芝士树】Vue.js面试题整理 / 知识点梳理
[前端芝士树] Vue.js 面试题整理 MVVM是什么? MVVM 是 Model-View-ViewModel 的缩写. Model代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑. ...
- js数组学习整理
原文地址:js数组学习整理 常用的js数组操作方法及原理 1.声明数组的方式 var colors = new Array();//空的数组 var colors = new Array(3); // ...
- 原生JS研究:学习jquery源码,收集整理常用JS函数
原生JS研究:学习jquery源码,收集整理常用JS函数: 1. JS获取原生class(getElementsByClass) 转自:http://blog.csdn.net/kongjiea/ar ...
- 整理Vue.js 面试题
Vue.js 面试题整理 Vue项目结构介绍 build 文件夹:用于存放 webpack 相关配置和脚本. config 文件夹:主要存放配置文件,比如配置开发环境的端口号.开启热加载或开启gz ...
- [ 转载 ] vue.js面试题一
转载自:https://www.cnblogs.com/aimeeblogs/p/9501490.html 如有侵权 联系删除 Vue.js面试题整理 一.什么是MVVM? MVVM是Model-Vi ...
- 2016 JS 笔试题汇总:
1 1 1 CS&S(中软国际): 1 JavaScript 循环表达式: 2 JavaScript表达式boolean返回值: 3 网页中的事件/HTML 事件属性/JavaScript ...
- dataTables 插件学习整理
在项目中使用了dataTables 插件,学习整理一下. dataTables 的官方中文网站 http://www.datatables.club 引入文件: 所有的都要引入 jq文件 1. dat ...
- js内存深入学习(二)
继上一篇文章 js内存深入学习(一) 3. 内存泄漏 对于持续运行的服务进程(daemon),必须及时释放不再用到的内存.否则,内存占用越来越高,轻则影响系统性能,重则导致进程崩溃. 对于不再用到的内 ...
- vue前端面试题知识点整理
vue前端面试题知识点整理 1. 说一下Vue的双向绑定数据的原理 vue 实现数据双向绑定主要是:采用数据劫持结合发布者-订阅者模式的方式,通过 Object.defineProperty() 来劫 ...
随机推荐
- sequelize的创建接口以及模糊查询
第一步: 在routes里面复制index.js更改为xxx.js(例如arctile.js) res.json()返回的就是json文件 第二步: 在views里app.js引用路由 第三步:查找数 ...
- 笔记:map函数方法映射
------------恢复内容开始------------ map函数可以对后端接口返回一个数组 map存在一个参数时: map存在三个参数时: 语法: array.map(function(cur ...
- mysql允许root用户在任何地方进行远程登录,并具有所有库任何操作权限
在本机先使用root用户登录mysql: mysql -u root -p"youpass" 进行授权操作: mysql>GRANT ALL PRIVILEGES ON *. ...
- vue+element-ui+sortable.js实现表格行和列的拖拽
项目碰到一个需求是需要表格字段列进行顺序拖拽,查过一些资料,中途也碰到了很多坑,实现方式如下: 封装成公用组件操作 //父组件 <template> <div> <com ...
- 注释中的Unicode编码也会被转义
现象 public class Unicode { public static void main(String[] args) { // \u000d System.out.println(&quo ...
- 龙中华著《Spring Boot实战派》读书笔记之基础篇
第四章 Spring Boot 基础 4.1 了解Spring Boot 项目结构 src/main/java //入口类,等 src/main/resources //静态文件和配置文件 src/t ...
- StringIO 和 BytesIO
StringIO 要把 str 字符串写入内存中,我们需要创建一个 StringIO 对象,然后像文件一样对读取内容.其中 StringIO 中多了一个 getvalue() 方法,目的是用于获取写入 ...
- mysql 设置相关
告诉mysql客户端这边的文字编码 告诉mysql希望返回的结果集编码: set character_set_client=gbk; set character_set_results=gbk; ...
- virtualvm2 观察者模式
<template> <div id="app"> <input type="text" v-model='msg'> &l ...
- 【CSS】CSS字体图标iconfont
CSS字体图标iconfont展示的是图标,本质上还是字体 使用字体图标步骤: 字体图标的下载 将字体图标引入到HTML 字体图标的追加(以后添加新的小图标) 推荐下载网站 icomoon字库http ...