首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >setInterval("/*some代码*/“,时间)和setInterval(函数(){ /*some代码*/ },时间)

setInterval("/*some代码*/“,时间)和setInterval(函数(){ /*some代码*/ },时间)
EN

Stack Overflow用户
提问于 2012-04-28 06:05:17
回答 3查看 146关注 0票数 0

我的印象是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
setInterval("/*some code*/", time)

相当于

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
setInterval(function() {
   /*some code*/
}, time)

显然不是!请比较以下内容(完整的HTML):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<pre id=p><script>n=setInterval("for(n+=7,i=k,P='p.\\n';i-=1/k;P+=P[i%2?(i%2*j-j+n/k^j)&1:2])j=k/i;p.innerHTML=P",k=64)</script>

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<pre id=p><script>n=setInterval(function() { for(n+=7,i=k,P='p.\\n';i-=1/k;P+=P[i%2?(i%2*j-j+n/k^j)&1:2])j=k/i;p.innerHTML=P },k=64)</script>

这两部动画(第一部取自这里)是不同的。

为什么这两个构造不是等价的?

答案:至少有三个不同之处

  1. 可变范围
  2. 性能
  3. 字符串转义
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-28 06:13:15

这两种形式的setInterval本质上是等价的--但您的代码不是。在第二个例子中,您将换行符双转义为\\n,而不仅仅是\n。试试这个:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<pre id=p><script>n=setInterval(function() { for(n+=7,i=k,P='p.\n';i-=1/k;P+=P[i%2?(i%2*j-j+n/k^j)&1:2])j=k/i;p.innerHTML=P },k=64)</script>

这应该是你想要的。

function()形式的setInterval在很多方面都更好--它更易读,当您在这里遇到时,您不需要处理在字符串中转义字符串的问题。

票数 3
EN

Stack Overflow用户

发布于 2012-04-28 06:10:47

我还没有研究过模糊代码,但是在setTimeoutsetInterval中使用字符串和函数之间的区别在于代码的运行范围。另外,当您使用字符串时,一些引擎可能也无法进行优化。

  • 当您传入一个字符串时,它将在全局范围运行。
  • 当您传入一个函数时,它将在定义它的作用域中运行。

这会影响代码的作用域中的变量,这会影响代码所做的工作。

下面是一个没有混淆的示例:活拷贝 \ 来源

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(function() {
  var foo = 42;

  // This will say "undefined", because there is no global `foo`
  setTimeout("display(typeof foo);", 0);

  // This will say "number", because the function is closure over
  // the current scope, whcih *does* have `foo`
  setTimeout(function() {
    display(typeof foo);
  }, 0);

})();

function display(msg) {
  var p = document.createElement('p');
  p.innerHTML = String(msg);
  document.body.appendChild(p);
}
票数 6
EN

Stack Overflow用户

发布于 2012-04-28 06:17:57

我不确定我是否理解您的示例,但据我所知,这两者之间的主要区别之一是,setInterval(string,time)的性能将不如setInterval(函数、时间),因为它需要动态地解释代码,就像eval()一样。此外,您的代码每次都会操作Dom,这是性能上的问题。

由于javascript是单线程的,所以setInterval中的间隔时间并不准确。参见John关于这方面的文章:http://ejohn.org/blog/how-javascript-timers-work/

根据setInterval(string,time)的性能损耗和相当小的间隔,我希望结果是不同的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10364235

复制
相关文章
javascript当中时间控制setTimeout和setInterval的用法
9.时间控制setTimeout和setInterval 马克-to-win:下个例子说明每秒刷新时间如何实现。(利用setTimeout方法): setTimeout和setInterval的区别是:setTimeout只执行1次,而setInterval可以无限执行。 例 1.9.1(setTimeoutIEFF.html) <HTML> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <SCRIPT LANGUAGE="JavaScript"> <!-- function time() { var now = new Date(); var y = now.getFullYear(); var m = now.getMonth()+1; var d = now.getDate(); var x = now.getDay(); var hour = now.getHours(); var day =new Array("日","一","二","三","四","五","六"); var xingqi = day[x]; var mi =now.getMinutes(); var s = now.getSeconds(); var t =document.getElementById("t"); t.innerHTML="今天是"+y+"年"+m+"月"+d+"日"+"星期"+xingqi+","+hour+":"+mi+":"+s; setTimeout("time()",1000); } //--> </SCRIPT> </HEAD> <BODY οnlοad="time()"> <div id="t"></div> </BODY> </HTML> setInterval&clearInterval
马克java社区
2021/01/18
6350
javascript当中时间控制setTimeout和setInterval的用法
setTimeout和setInterval执行时间问题
setTimeout:在指定的毫秒数后,将定时任务处理的函数添加到执行队列的队尾。
用户1349575
2022/02/09
1K0
深度解密setTimeout和setInterval——为setInterval正名!
重复定时器,JS有一个方法叫做setInterval专门为此而生,但是大家diss他的理由很多,比如跳帧,比如容易内存泄漏,是个没人爱的孩子。而且setTimeout完全可以通过自身迭代实现重复定时的效果,因此setIntervval更加无人问津,而且对他退避三舍,感觉用setInterval就很low。But!setInverval真的不如setTimeout吗?请大家跟着笔者一起来一步步探索吧!
小美娜娜
2019/04/04
3.9K0
深度解密setTimeout和setInterval——为setInterval正名!
setInterval
坍圮的殿堂总还是庙,冷落的圣像依然是神。 在前端开发中我们或许想定时做一些操作 可以使用一个setInterval函数去做 // 定时控制台打印ruben setInterval(function () { console.log("ruben"); }, 1000); // 定时控制台打印achao,注意这里是使用字符串形式写法 setInterval('console.log("achao");', 1000); 可以打开控制台看到效果
阿超
2022/08/16
1.1K0
setInterval
js setInterval 代码实现页面轮询
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/details/77059666
泥豆芽儿 MT
2018/09/11
2.8K0
js setInterval 代码实现页面轮询
setTimeout和setInterval
setTimeout(methodName, interval); //间隔时间单位为毫秒,表示interval毫秒后执行方法methodName
tandaxia
2018/09/27
2K0
setTimeout和setInterval
新建 html 文件 21-setTimeout.html ,编写下方程序,运行看看效果吧
鹤川
2023/03/21
1K0
find()和some()
find()方法 find() 方法返回通过测试(函数内判断)的数组的第一个元素的值。 find() 方法为数组中的每个元素都调用一次函数执行: 当数组中的元素在测试条件时返回 true 时, find() 返回符合条件的元素,之后的值不会再调用执行函数。 如果没有符合条件的元素返回 undefined // find() let arr6 = [1, 2, 3, 4, 5] let res = arr6.find(val => { return val > 3 }) console.log(res
hss
2022/02/25
5160
setInterval 和 setTimeout 用法
setInterval 定时器,开始执行后,每间隔指定时间执行一次,除非清除定时器 用法: setInterval(function(){ 方法… },1000);// 间隔时间 setTimeout 是在指定的时间后,执行该事件 用法: setTimeout(function(){ 方法…. },1000); clearInterval(); // 清除定时器 <html> <head> <title>js</title> </head> <body> <script> test();
IT架构圈
2018/06/01
1K0
settime和setinterval_setinterval是异步还是同步
setTimeout和setInterval的语法相同。它们都有两个参数,一个是将要执行的代码字符串,还有一个是以毫秒为单位的时间间隔,当过了那个时间段之后就将执行那段代码。
全栈程序员站长
2022/11/09
7890
关于setTimeout和setInterval的函数参数问题
今天在写验证码倒计时小demo时,用了如下代码: window.setTimeout(count(num),1000); 这样直接使用将使count函数立即执行,并将返回值传递给setTimeout函数作为参数,其结果并不是真正需要的,所以会出现问题。 方法一 使用字符串形式可以达到想要的结果: window.setTimeout("count(num)",1000); 这是我以前常用的方法。 但这种写法是将函数包在引号里,有点像字符串,不够直观。 而且有些场合必须使用函数名,于是上网查阅了以下方法: 方法
mcq
2018/06/20
2K0
setInterval停止
实现代码如下: var refreshIntervalId = setInterval(fname, 10000); /* later */ clearInterval(refreshIntervalId); var intervalID = setInterval(func, [delay, arg1, arg2, ...]); var intervalID = setInterval(function[, delay]); var intervalID = setInterval(code, [d
IT工作者
2021/12/29
2.8K0
Some Modifications
Sublime Text 3 is my favorite text editor. And here are some modifications I made.
py3study
2020/01/03
5650
setTimeout实现setInterval和clearInterval[通俗易懂]
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/09
4930
scala的option和some
对于学习 Scala 的 Java™ 开发人员来说,对象是一个比较自然、简单的入口点。在 本系列 前几期文章中,我介绍了 Scala 中一些面向对象的编程方法,这些方法实际上与 Java 编程的区别不是很大。我还向您展示了 Scala 如何重新应用传统的面向对象概念,找到其缺点,并根据 21 世纪的新需求重新加以改造。Scala 一直隐藏的一些重要内容将要现身:Scala 也是一种函数语言(这里的函数性是与其他 dys 函数语言相对而言的)。 Scala 的面向函数性非常值得探讨,这不仅是因为已经研究完了对
Albert陈凯
2018/04/04
1.2K0
some function magic
# encoding: utf-8 """ Create on: 2018-08-24 上午1:32 author: sato mail: ysudqfs@163.com life is short, you need python """ # def insert_sort(array): # # 从第二个开始循环 # for i in range(1, len(array)): # # 认为他是最小的 # min = array[i] #
用户2458545
2022/09/07
2910
提交代码报错 error: failed to push some refs to
陌涛想把本地的分支推送到远程仓库时,突然出现了错误提醒error: failed to push some refs to...。瞅了瞅,也没错呀,那为啥推不上去??? 然后就发现,这个error发生的情况竟然还挺多样化。刚刚推Gitee(码云)的时候,是master,现在推Github是main,改了下,顺便pull了远程仓库,再push,就推送成功了。
陌涛
2021/01/14
11.9K0
提交代码报错 error: failed to push some refs to
jquery的setInterval函数用法「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/155630.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/07
1.1K0
setTimeout()和setInterval()在用法上有什么区别_setinterval返回值
 这两个方法都可以用来在固定的时间段后去执行一段javascirpt代码,不过两者各有各的应用场景。
全栈程序员站长
2022/11/10
5480
JS setInterval函数实现倒计时
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@taglib prefix="s" uri="/struts-tags"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServer
week
2018/08/27
6.7K0

相似问题

setInterval和长时间运行的函数

13

SetInterval()中的setInterval()在不同的时间

20

setInterval时间不精确

11

Jquery重置setInterval时间

20

setInterval持续时间

27
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文