解释防抖和节流;解构赋值;JS的 typeof 返回哪些数据类型4. js的 Dom 节点操作: 创建、插入、删除、复制、查找;JS 的计时器运行原理,为什么可以触发计时效果? 计时器是多线程吗?

 一、请解释一下防抖和节流
防抖策略(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是一个单线程语言,计时器提供了种绕过这种语言限制来执行代码的能力。
总结:
计时器是单线程的,需要等待上一个执行完,如果上一个没有执行完,下一个需要延迟执行,直到上一个执行完.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值