日期对象Date() 计算机纪元年 : 1970.01.01 每一个创建出来的date对象都记录着那一刻的时间 doc getTime()可以计算时间间隔(ms) var start = new Date().getTime(); for (var i = 0; i ) {} var end = new Date().getTime(); console.log(end - start); 应用场景举例 限时秒杀购物 闹钟 任何需要获取时间差的场景 定时器 setInterval()、setTimeout()、clearInterval()、clearTimeout() 都是 在JavaScript的世界里,DOM(Document Object Model)是用于表示HTML或XML文档的一种树形结构,它允许程序和脚本动态更新、添加、删除以及修改元素和属性。在本篇【DOM基础知识(五)】中,我们将重点探讨日期对象Date()以及与时间相关的定时器。 日期对象Date()是JavaScript内置的一个对象,它的计算机纪元年始于1970年1月1日0时0分0秒(UTC)。每次创建一个新的Date实例,都会记录下那一刻的时间。`getTime()`方法则用来获取当前时间距离1970年1月1日的毫秒数。例如: ```javascript var start = new Date().getTime(); // 执行一段代码 var end = new Date().getTime(); console.log(end - start); ``` 这段代码可用于计算代码执行所需的时间,这对于性能测试或者构建限时秒杀系统等需要精确计时的场景非常有用。 定时器是JavaScript中的重要工具,它们包括`setInterval()`, `setTimeout()`, `clearInterval()`, `clearTimeout()`,这些方法都是定义在全局对象`window`上的。需要注意的是,当定时器内的函数被调用时,`this`的值会指向`window`。 `setInterval(fn, time)`方法会在指定的毫秒数后重复执行传入的函数`fn`。例如: ```javascript var time = 1000; var timer = setInterval(() => { console.log(1); }, time); ``` 上述代码会每秒打印一次"1"。然而,即使在定时器启动后改变了`time`的值,定时器的执行间隔(`Timeout._idleTimeout`)并不会随之改变,因此定时器的间隔仍然保持为最初设置的1000毫秒。 `setTimeout(fn, time)`与`setInterval`类似,但它只执行一次。但需要注意的是,JavaScript引擎的执行机制可能导致定时器的执行并不完全精确。例如: ```javascript var start = new Date().getTime(); setTimeout(() => { var end = new Date().getTime(); console.log(end - start); }, 1000); ``` 即使设置了1000毫秒的延迟,实际输出的时间差可能略大于或小于1000毫秒,因为JavaScript引擎的事件循环和执行队列的影响。定时器的回调函数会被安排在指定时间后加入执行队列,但何时真正执行取决于当前执行栈的状态和其他任务的优先级。 在JavaScript中,定时器的实现依赖于一种名为红黑树的数据结构,这使得有可能在小于指定间隔的情况下提前执行回调函数。因此,对于需要高精度时间控制的场景,例如VIP电影试看的5分钟倒计时,可能需要采用其他更精确的策略。 理解JavaScript中的Date对象和定时器是开发Web应用时不可或缺的基础知识,它们在各种场景中都有广泛的应用,如计时器、倒计时、心跳检测等。通过深入学习和实践,我们可以更好地利用这些工具来创建高效、响应式的用户体验。
- 粉丝: 6
- 资源: 930
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于C++的Unix V6++二级文件系统.zip
- (源码)基于Spring Boot和JPA的皮皮虾图片收集系统.zip
- (源码)基于Arduino和Python的实时歌曲信息液晶显示屏展示系统.zip
- (源码)基于C++和C混合模式的操作系统开发项目.zip
- (源码)基于Arduino的全球天气监控系统.zip
- OpenCVForUnity2.6.0.unitypackage
- (源码)基于SimPy和贝叶斯优化的流程仿真系统.zip
- (源码)基于Java Web的个人信息管理系统.zip
- (源码)基于C++和OTL4的PostgreSQL数据库连接系统.zip
- (源码)基于ESP32和AWS IoT Core的室内温湿度监测系统.zip
评论0