js 里的 settimeout函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js 里的 settimeout函数相关的知识,希望对你有一定的参考价值。

不停地调用函数 内存不会不够吗?
是怎样释放内存的?

首先,基本概念:
调用函数不占内存,一个函数只在内存中出现一次。函数里面用到的变量是占用内存的。
函数调用结束后内部变量全部会被释放,在内存中保存的有全局变量和函数返回值。
所以,针对你这个问题,内存够不够用,就看你这个定时settimeout函数执行的代码段是怎么修改全局变量和自身返回值的,如果一直是累加,早晚内存是不够用的。
对了,js还有一个主动回收内存的函数CollectGarbage(),提供在函数执行内部进行临时主动内存清理的功能。追问

比如:
function f()
k=new Date();
document.write(k.getSeconds();
setTimeout(f(),1000);

来显示秒
外层函数一直没结束啊

比如:
function f()
k=new Date();
document.write(k.getSeconds();
setTimeout(f(),1000);

来显示秒
外层函数一直没结束啊

比如:
function f()
k=new Date();
document.write(k.getSeconds();
setTimeout(f(),1000);

来显示秒
外层函数一直没结束啊

比如:
function f()
k=new Date();
document.write(k.getSeconds();
setTimeout(f(),1000);

来显示秒
外层函数一直没结束啊

追答

你这代码是错的。我知道你的意思是要每1秒钟执行一次f函数,但是你这个是每过一秒钟,f函数的执行次数以指数形式增长,第一秒执行了1次,第二秒就执行了2次,第三秒就执行了4次。。。因为每个函数每次执行的时候,会有一个新的定时器被设置。把定时写在外面。
function f()
k=new Date();
document.write(k.getSeconds();

setTimeout(f(),1000);

参考技术A setTimeout(code,millisec)
var t = setTimeout("javascript语句", 毫秒)
setTimeout() 方法会返回某个值。在上面的语句中,值被储存在名为 t 的变量中。假如你希望取消这个 setTimeout(),你可以使用这个变量名来指定它。
setTimeout() 的第一个参数是含有 JavaScript 语句的字符串。这个语句可能诸如 "alert('5 seconds!')",或者对函数的调用,诸如 alertMsg()"。
第二个参数指示从当前起多少毫秒后执行第一个参数
参数
code (必需):要调用的函数后要执行的 JavaScript 代码串。
millisec(必需):在执行代码前需等待的毫秒数。
提示
setTimeout() 只执行 code 一次。如果要多次调用,请使用 setInterval() 或者让 code 自身再次调用 setTimeout()。
实例
实例1:
<html>
<head>
<script type="text/javascript">
function timedMsg()

var t=setTimeout("alert('5 seconds!')",5000)

</script>
</head>
<body>
<form>
<input type="button" value="Display timed alertbox!" onClick="timedMsg()">
</form>
<p>Click on the button above. An alert box will be displayed after 5 seconds.</p>
</body>
</html>
参考技术B 函数执行完会释放的,但是回收的时机不一定追问

但是settimeout就在函数里 函数就一直没完

但是settimeout就在函数里 函数就一直没完

以上是关于js 里的 settimeout函数的主要内容,如果未能解决你的问题,请参考以下文章

js 里的 settimeout函数

JSJavaScript引擎的内部执行机制

js setTimeout如何调用自身所在的函数(有参数传递的)?

SetTimer

在js对象的方法里有setTimeout函数,在setTimeout里怎么调用该对象方法,用this没有用

ATG精准科技-前端面试题