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() 来劫 ...
随机推荐
- Python 删除文件及文件夹
2种方式: [不删除给定的目录] path1 = "D:\\dev\\workspace\\python\\pytestDemo\\222" def del_filedir(pat ...
- Python基础数据类型-Tuple(元组)
a = () b = (1) # 不是元组类型,是int型 c = (1,) # 只有一个元素的时候,要加逗号才能表示是元组 d = (1, 2, 3, 4, 5, 6, 1) print(type( ...
- JetPack Compose 入门还得是官方
官方写的真不错! 和那些所谓"教程"比真的简单高效不罗嗦! 所以还得是官方! 使用 Jetpack Compose 更快地打造更出色的应用 https://developer.an ...
- select * into,insert into,create table
SELECT * INTO Table2 FROM Table1要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中 INSERT I ...
- javaScript事件onmouseout 、 onmouseove
javaScript事件onmouseout . onmouseove onmouseout: 鼠标从某元素移开 onmouseover: 鼠标被移到某元素之上 这两个事件是鼠标滑过元素是的效果,可以 ...
- 三,打包electron
1,在当前项目下运行 npm install --save-dev @electron-forge/cli npx electron-forge import 此时package.json内容如下: ...
- swing编程
在界面中放入图片:路径以项目路径为准 img包一般放在项目文件夹下 package adapter;import java.awt.Color;import java.awt.Dimension;i ...
- flask-script的简单使用
1.Flask-Script介绍Flask-Script的作用是可以通过命令行的形式来操作Flask.Flask Script扩展提供向Flask插入外部脚本的功能,包括运行一个开发用的服务器,一个定 ...
- linux命令基本操作
chmod 命令 : chmod -R 755 tools_command/ 解释 : -R 为递归遍历tools_command文件夹, chmod 755修改权限: 查看所有用户 1.cat /e ...
- MATLAB画图自动确定坐标范围(GUI)
今天在用MATLAB做我的毕设的时候碰到一个很纠结的问题,之所以说纠结是因为我觉得这个问题很简单,可是一时半会就是弄不出来(ー`´ー).鼓捣了半个小时左右吧,终于搞出来了.下面做个纪念: 问题描述 在 ...