setTimeout传参 和 运行机制】的更多相关文章

1.setTimeout 传参数 setTimeout还允许添加更多的参数.它们将被传入推迟执行的函数(回调函数) 上面代码中,setTimeout共有4个参数.最后那两个参数,将在1000毫秒之后回调函数执行时,作为回调函数的参数. 2.setTimeout运行机制 setTimeout和setInterval的运行机制是,将指定的代码移出本次执行,等到下一轮Event Loop时,再检查是否到了指定时间.如果到了,就执行对应的代码:如果不到,就等到再下一轮Event Loop时重新判断.这意…
这里所谓“保值”,是指在setTimeout中指定的时间后,执行指定的方法所用到的“参数”值,跟执行setTimeout时该“参数”值一样.是不是有点懵?看如下例子: ========================================= for(var i=0;i<10;i++) { setTimeout(function(){alert(i);},i*1000); } 期望:依次弹出0~9 实际:总是弹出10  原因:在若干时间后,所使用到的 i的值已经是 i最新的值,也就是在f…
unction test(s) { alert(s); } window.setTimeout(function(){test('str');},1000); 这样就可以了...为什么是这样呢.因为setTimeout要求的第一个参数是函数...比如setTimeout(a_fun,1000)这样是可以的,a_fun是一个函数.但是setTimeout(a_fun(),1000);这样就不行了.因为这里a_fun()其实是函数的返回值了...这样讲应该能明白了.另外,不推荐网上有人用的方法set…
setTimeout函数有两个参数,都是必须的,一个是要执行的函数,一个是延时的时间 第一个参数: 要执行的函数,一般来说是可以执行的,但是这里遇到一个问题,就是如果变量是个数组的话, 如果数组为null,则报错:如果数组里面有一个值,则传入函数的值的类型是什么的,函数内就变成什么类型,比如string,number,而并不是数组类型 解决方式可以使用内部函数,这样就不用传参数…
网上文章说有3种方法,对于我来说一种方法就够了: <script> var user_name='离间计' //定时器 异步运行 function hello(name){ alert(name); } //使用方法名字执行方法 var t1 = window.setTimeout(hello,1000,user_name); window.clearTimeout(t1);//去掉定时器 </script> <script> var user_name='离间计' /…
w TypeError : Cannot set property 'innerHTML' of nullTypeError : Cannot set property 'value' of null通过id或其他部分属性查找元素改变页面值时,如在点击中event.target.getAttribute('id'),event.target.getAttribute('wattr'),出现此类错误原因:0-dom中无此id或相应的wattr1-dom中有此id或相应的wattr 但都是在js代码…
今天写代码遇到这样一个问题,先上代码 <!--JS方法--> function textout(obj){ if(opac==60){opac=0;return;}; opac+=10; if(document.all){ obj.style.filter="alpha(opacity="+opac+")"; } else {obj.style.opacity=(opac/100);} setTimeout('textout('+obj+')',200)…
一般setTimeout中的参数为 setTimeout(f,time)但是如果我想要给f函数传入一个参数怎么办 setTimeout(f(arguments),time) 如果我这样写的话,那么time就不起作用了,f函数会立即执行,因为函数名后跟圆括号 一.让f(arguments)返回一个无参函数function f(arguments){ return function(){ ff(arguments); }}这样虽然f(arguments)立即执行了,执行后也只是一个无参函数,然后在f…
setTimeout()函数:用来指定某个函数或某段代码在多少毫秒之后执行.它返回一个整数,表示定时器timer的编号,可以用来取消该定时器. 例子 ? 1 2 3 4 5 console.log(1); setTimeout(function () {  console.log(2); }, 0); console.log(3); 问:最后的打印顺序是什么?(如果不了解js的运行机制就会答错) 正确答案:1 3 2 解析:无论setTimeout的执行时间是0还是1000,结果都是先输出3后输…
在开始之前先看个面试例子 为什么会是0 1 2 2,而不是 0 0 1 1 再来看个例子 输出结果是4个undefined,为何不是1,2,3,4? 这是为什么呢,这是因为setTimeout是异步的,运行机制是指定的代码,必须等到本次执行的所有同步代码都执行完,才会执行.优先关系:异步任务要挂起,先执行同步任务,同步任务执行完毕才会响应异步任务. 这里解释下异步执行过程,浏览器有个定时器(timer)模块,定时器到了执行时间才会把异步任务放到异步队列,for循环体执行的过程中并没有把setTi…