大家先不要看后面的内容,先看下面这段简短的代码,想象i应该弹出的是多少呢?
复制代码
var t=null;
var i=0;
function a(){
i++;
if(i==20){
return;
}
t=setTimeout(a,17);
}
a();
alert(i);
上段程序的答案是"1"。
那么为什么程序没等循环完毕就着急地开始运行alert(i)了呢,原因就出在setTimeout的原理上。
其实setTimeout和setInterval这两个定时器一旦触发,就是和js程序并行执行的,也就是他们并不在一个时间线上。计时器的作用是仅仅是做一个计划,那就是每隔一段时间执行一次目标方法。
比如我们做个周计划每周末都出去玩,这其实就是一个定时器,每隔七天出去玩一次。但是周一到周五还是要上班的,也就是说我们不能因为周末出去玩就周一到周五不干事了。
js程序也是这样的,计时器的任务我每到那个时间点会完成,但是其它时间我会继续执行下面的代码。如上程序,a函数运行到定时器前一句的时候,i的值是1,然后执行定时器,17毫秒远远大过程序的运行时间,于是js不等了继续执行,于是alert(i),也就是1。
总结成一句话:那就是定时器和js其他程序是并行执行的,互不影响!
于是开头的程序正确的写法应该是这样的:
复制代码
var t=null;
var i=0;
function a(){
i++;
if(i==20){
alert(i);
return;
}
t=setTimeout(a,1);
}
a();
在程序出口的地方做操作,就可以正确地弹出i了(i=20)。
分享到:
相关推荐
JavaScript定时器是编程中不可或...理解JavaScript定时器的工作原理以及单线程环境下的事件循环机制,是编写高效、无阻塞的JavaScript代码的关键。通过合理地运用这些知识,我们可以创建出更流畅、响应更快的Web应用。
通过深入理解JavaScript定时器的工作原理和最佳实践,开发者可以更好地控制代码的执行时机,创建出更加高效、响应式的Web应用。对于那些涉及到定时更新、数据轮询或者复杂动画的项目,掌握这些知识是至关重要的。
本篇文章将深入探讨JavaScript定时器的工作原理以及它们在单线程环境中的行为。 ### 一、JavaScript的单线程模型 JavaScript是一种解释型的、基于原型的、动态类型的脚本语言,它的执行环境主要是Web浏览器中的...
下面将详细分析JavaScript定时器的实现原理、妙用以及使用时需注意的事项。 一、储备知识 在JavaScript中,常用的两种定时器分别是setTimeout和setInterval。setTimeout函数用于设置一个定时器,这个定时器会在...
JavaScript中的高级定时器是开发者控制代码...总之,深入理解JavaScript的高级定时器原理和函数节流技术,能够帮助开发者编写更加高效、流畅的代码,尤其是在处理响应式事件和频繁操作时,可以显著提升用户体验和性能。
JavaScript定时器是Web开发中非常重要的一个概念,它允许开发者在特定的时间间隔内执行某段代码,从而实现动态效果或者异步操作。本篇将详细讲解两个JavaScript定时器的使用范例。 首先,我们来看看JavaScript中的...
首先,我们需要了解JavaScript定时器的基本原理。`setInterval()`函数用于重复执行一段代码,而`setTimeout()`则在指定时间后仅执行一次。在蛇形文字的场景中,`setInterval()`通常被用来周期性地更新蛇的位置,使它...
说到 javascript 中的定时器,我们肯定会想到 setTimeout() 和 setInterval() 这两个函数。本文将从 事件循环(Event Loop) 的角度来分析两者的工作原理和区别
实际的源码可能包括HTML结构以及上述的JavaScript定时器代码。源码分析可能涉及DOM操作、CSS样式、事件绑定等内容,这些都需要查看实际代码才能详细说明。 总结,JavaScript 定时器是实现动态效果和自动化任务的...
1. **JSP定时器原理** JSP定时器并非直接由JSP本身提供,而是通过JavaScript或者Java的Servlet来实现。通常,我们会使用JavaScript的setInterval()函数来定期执行某个操作,或者在服务器端利用Servlet的生命周期...
总结,理解定时器的工作原理、选择合适的定时器类型以及妥善处理定时器带来的问题,都是IT专业人员必备的技能。通过不断学习和实践,我们可以更有效地利用定时器来优化我们的应用程序和系统,提升效率和用户体验。
下面,我们将深入探讨定时器的概念、工作原理以及相关知识点。 定时器,简单来说,是一个能够按照预定时间执行特定任务的机制。在编程中,定时器通常通过计数或者等待信号来实现。根据应用场景,定时器可以分为硬件...
1. **JavaScript定时器**: - `setTimeout(func, delay)`:用于在指定的延迟毫秒后执行一次函数func。 - `setInterval(func, delay)`:用于每隔指定的延迟毫秒重复执行函数func,直到 clearInterval 清除。 2. **...
在提供的`djs.js`文件中,可能包含了与定时器相关的JavaScript代码,用于实现某种特定的功能。通过分析这个文件,我们可以更深入地了解定时器在实际项目中的应用。 总的来说,HTML界面定时器是通过JavaScript实现的...
定时器的工作原理通常是设置一个间隔时间,当这个时间过去后,定时器会“触发”,通常通过向系统发送一个信号或消息来通知应用程序。 ### 消息循环 消息循环是GUI(图形用户界面)应用程序中的核心组成部分,它...
本文将深入探讨定时器的工作原理、种类、应用场景以及如何在实际项目中运用定时器技术。 首先,定时器是一种能按照预设的时间间隔执行特定任务的机制。在计算机编程中,定时器通常由操作系统或编程库提供,允许...
本篇主要围绕"简单定时器"这一主题,详细介绍定时器的基本概念、工作原理以及如何实现一个简单的定时器。 1. **定时器的概念** 定时器,顾名思义,就是能够按照预设的时间间隔执行任务的机制。它可以是硬件设备,...