Genzhen
Genzhen
> 每日一题会在下午四点在交流群集中讨论,五点小程序中更新答案 > 欢迎大家在下方发表自己的优质见解 > ## 二维码加载失败可点击 [小程序二维码](http://img-static.yidengxuetang.com/wxapp/qr-day/qid-1406.png) 扫描下方二维码,收藏关注,及时获取答案以及详细解析,同时可解锁800+道前端面试题。 --- ### 严格模式中的变化 ECMAScript 5 的严格模式是采用具有限制性 JavaScript 变体的一种方式,从而使代码显示地脱离“马虎模式/稀松模式/懒散模式“(sloppy)模式。 严格模式同时改变了语法及运行时行为。变化通常分为这几类:将问题直接转化为错误(如语法错误或运行时错误), 简化了如何为给定名称的特定变量计算,简化了 eval 以及 arguments, 将写"安全“JavaScript 的步骤变得更简单,以及改变了预测未来 ECMAScript 行为的方式。 #### 1.1 将过失错误转成异常 -...
> 每日一题会在下午四点在交流群集中讨论,五点小程序中更新答案 > 欢迎大家在下方发表自己的优质见解 > 二维码加载失败可点击 [小程序二维码](http://img-static.yidengxuetang.com/wxapp/qr-day/qid-1003.png) 扫描下方二维码,收藏关注,及时获取答案以及详细解析,同时可解锁800+道前端面试题。 --- ### reduce & map reduce 是一个累加方法,是对数组累积执行回调函数,返回最终计算的结果。 ```js array.reduce(function (total, currentValue, currentIndex, arr) {}, initialValue); ``` - total 必需:初始值,或者计算结束后返回的值 - curentValue 必需:当前元素...
> 每日一题会在下午四点在交流群集中讨论,五点小程序中更新答案 > 欢迎大家在下方发表自己的优质见解 > ## 二维码加载失败可点击 [小程序二维码](http://img-static.yidengxuetang.com/wxapp/qr-day/qid-1362.png) 扫描下方二维码,收藏关注,及时获取答案以及详细解析,同时可解锁800+道前端面试题。
> 每日一题会在下午四点在交流群集中讨论,五点小程序中更新答案 > 欢迎大家在下方发表自己的优质见解 > ## 二维码加载失败可点击 [小程序二维码](http://img-static.yidengxuetang.com/wxapp/qr-day/qid-1400.png) 扫描下方二维码,收藏关注,及时获取答案以及详细解析,同时可解锁800+道前端面试题。 --- ### 分析 在前端实现中一般会通过 setTimeout 和 setInterval 方法来实现一个倒计时效果。但是使用这些方法会存在时间偏差的问题,这是由于 js 的程序执行机制造成的,setTimeout 和 setInterval 的作用是隔一段时间将回调事件加入到事件队列中,因此事件并不是立即执行的,它会等到当前执行栈为空的时候再取出事件执行,因此事件等待执行的时间就是造成误差的原因。 一般解决倒计时中的误差的有这样两种办法: 1. 第一种是通过前端定时向服务器发送请求获取最新的时间差,以此来校准倒计时时间。但是这样会存在一个很大的问题,那就是每隔一秒去请求服务器,这样如果用户多了,服务器就会崩溃(内存占用率很大). 2. 第二种方法是前端根据偏差时间来自动调整间隔时间的方式来实现的。这一种方式首先是以 setTimeout 递归的方式来实现倒计时,然后通过一个变量来记录已经倒计时的秒数。每一次函数调用的时候,首先将变量加一,然后根据这个变量和每次的间隔时间,我们就可以计算出此时无偏差时应该显示的时间。然后将当前的真实时间与这个时间相减,这样我们就可以得到时间的偏差大小,因此我们在设置下一个定时器的间隔大小的时候,我们就从间隔时间中减去这个偏差大小,以此来实现由于程序执行所造成的时间误差的纠正。 看下第二种的代码实现,基本误差可以控制在...