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面试题学习整理的更多相关文章

  1. vue.js面试题整理

    Vue.js面试题整理 一.什么是MVVM? MVVM是Model-View-ViewModel的缩写.MVVM是一种设计思想.Model 层代表数据模型,也可以在Model中定义数据修改和操作的业务 ...

  2. 【前端芝士树】Vue.js面试题整理 / 知识点梳理

    [前端芝士树] Vue.js 面试题整理 MVVM是什么? MVVM 是 Model-View-ViewModel 的缩写. Model代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑. ...

  3. js数组学习整理

    原文地址:js数组学习整理 常用的js数组操作方法及原理 1.声明数组的方式 var colors = new Array();//空的数组 var colors = new Array(3); // ...

  4. 原生JS研究:学习jquery源码,收集整理常用JS函数

    原生JS研究:学习jquery源码,收集整理常用JS函数: 1. JS获取原生class(getElementsByClass) 转自:http://blog.csdn.net/kongjiea/ar ...

  5. 整理Vue.js 面试题

    Vue.js 面试题整理   Vue项目结构介绍 build 文件夹:用于存放 webpack 相关配置和脚本. config 文件夹:主要存放配置文件,比如配置开发环境的端口号.开启热加载或开启gz ...

  6. [ 转载 ] vue.js面试题一

    转载自:https://www.cnblogs.com/aimeeblogs/p/9501490.html 如有侵权 联系删除 Vue.js面试题整理 一.什么是MVVM? MVVM是Model-Vi ...

  7. 2016 JS 笔试题汇总:

    1 1 1 CS&S(中软国际): 1 JavaScript 循环表达式: 2  JavaScript表达式boolean返回值: 3 网页中的事件/HTML 事件属性/JavaScript ...

  8. dataTables 插件学习整理

    在项目中使用了dataTables 插件,学习整理一下. dataTables 的官方中文网站 http://www.datatables.club 引入文件: 所有的都要引入 jq文件 1. dat ...

  9. js内存深入学习(二)

    继上一篇文章 js内存深入学习(一) 3. 内存泄漏 对于持续运行的服务进程(daemon),必须及时释放不再用到的内存.否则,内存占用越来越高,轻则影响系统性能,重则导致进程崩溃. 对于不再用到的内 ...

  10. vue前端面试题知识点整理

    vue前端面试题知识点整理 1. 说一下Vue的双向绑定数据的原理 vue 实现数据双向绑定主要是:采用数据劫持结合发布者-订阅者模式的方式,通过 Object.defineProperty() 来劫 ...

随机推荐

  1. Python 删除文件及文件夹

    2种方式: [不删除给定的目录] path1 = "D:\\dev\\workspace\\python\\pytestDemo\\222" def del_filedir(pat ...

  2. Python基础数据类型-Tuple(元组)

    a = () b = (1) # 不是元组类型,是int型 c = (1,) # 只有一个元素的时候,要加逗号才能表示是元组 d = (1, 2, 3, 4, 5, 6, 1) print(type( ...

  3. JetPack Compose 入门还得是官方

    官方写的真不错! 和那些所谓"教程"比真的简单高效不罗嗦! 所以还得是官方! 使用 Jetpack Compose 更快地打造更出色的应用 https://developer.an ...

  4. select * into,insert into,create table

    SELECT * INTO Table2 FROM Table1要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中 INSERT I ...

  5. javaScript事件onmouseout 、 onmouseove

    javaScript事件onmouseout . onmouseove onmouseout: 鼠标从某元素移开 onmouseover: 鼠标被移到某元素之上 这两个事件是鼠标滑过元素是的效果,可以 ...

  6. 三,打包electron

    1,在当前项目下运行 npm install --save-dev @electron-forge/cli npx electron-forge import 此时package.json内容如下: ...

  7. swing编程

    在界面中放入图片:路径以项目路径为准  img包一般放在项目文件夹下 package adapter;import java.awt.Color;import java.awt.Dimension;i ...

  8. flask-script的简单使用

    1.Flask-Script介绍Flask-Script的作用是可以通过命令行的形式来操作Flask.Flask Script扩展提供向Flask插入外部脚本的功能,包括运行一个开发用的服务器,一个定 ...

  9. linux命令基本操作

    chmod 命令 : chmod -R 755 tools_command/ 解释 : -R 为递归遍历tools_command文件夹, chmod 755修改权限: 查看所有用户 1.cat /e ...

  10. MATLAB画图自动确定坐标范围(GUI)

    今天在用MATLAB做我的毕设的时候碰到一个很纠结的问题,之所以说纠结是因为我觉得这个问题很简单,可是一时半会就是弄不出来(ー`´ー).鼓捣了半个小时左右吧,终于搞出来了.下面做个纪念: 问题描述 在 ...