一、请解释一下防抖和节流
防抖策略(debounce)是当事件被触发后,延迟 n 秒后再执行回调,如果在这 n 秒内事件又被触发,则重新计时。
意思就是:这件事儿需要等待,如果你反复催促,我就重新计时
用户在输入框中连续输入一串字符时,可以通过防抖策略,只在输入完后,才执行查询的请求,这样可以有效减少请求次数,节约请求资源;
节流策略(throttle),顾名思义,可以减少一段时间内事件的触发频率
① 鼠标连续不断地触发某事件(如点击),只在单位时间内只触发一次;
② 懒加载时要监听计算滚动条的位置,但不必每次滑动都触发,可以降低计算的频率,而不必去浪费 CPU 资源;
二、解构赋值
es6允许按照一定的模式,从数组或对象中提取值,给变量进行赋值,称为解构赋值。
特点:
1、给变量赋值
2、值的来源是对象或数组
3、规则:按一定的模式
一般用在数据交互,ajax请求数据。
三、 javascript 的 typeof 返回哪些数据类型?
typeof 共返回6种数据格式:
7种 分别为number, boolean, string, undefined, object, function,symbol(ES6)
四、 javaScript 的 Dom 节点操作: 创建、插入、删除、复制、查找
1. 创建新节点
createDocumentFragment() // 创建一个 DOM 片段
createElement() // 创建一个具体的元素
createTextNode() // 创建一个文本节点
2. 添加、移除、替换、插入
appendChild()//添加
removeChild()//移除
replaceChild()//替换
insertBefore()//插入,在已有的子节点前插入一个新的子节点
cloneNode(true)//赋值,false浅拷贝(只复制节点本身) true深拷贝(复制本节点以及整个子节点树)
3. 查找
getElementsByTagName() // 通过标签名称
getElementsByName() // 通过元素的 Name 属性的值(IE 容错能力较强,会得到一个数组,
其中包括 id 等于 name 值的)
getElementById() // 通过元素 Id,唯一性
五、JS 的计时器运行原理是怎样的,为什么可以触发计时效果? 计时器是多线程吗?
1.javascript引擎只有一个线程,强迫异步事件排队等待被执行。
2.setTimeout和setInterval本质上不同的地方是他们如何执行异步代码的。
3.如果一个定时器正在执行的时候被阻塞了,那么它将被推迟到下一个可能执行点,这会使得延迟时间有可能超过声明定时器设置的值
4.Interval如果有足够的时间来执行(大于制定的延迟时间),那么它将无延迟的一个紧接着一个执行.
原理:
计时器通过设定一定的时间段(毫秒)来异步的执行一段代码。因为javascript是一个单线程语言,计时器提供了种绕过这种语言限制来执行代码的能力。
总结:
计时器是单线程的,需要等待上一个执行完,如果上一个没有执行完,下一个需要延迟执行,直到上一个执行完.

被折叠的 条评论
为什么被折叠?



