请指点js setTimeout的参数的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请指点js setTimeout的参数的问题相关的知识,希望对你有一定的参考价值。
如何修改以下代码以输出正确的myName值“Foo function.”?原因?
foo = function() this.myName = "Foo function.";
foo.prototype.sayHello = function() alert(this.myName);
foo.prototype.bar = function()
setTimeout(this.sayHello, 1000);//这里直接用的this.sayHello
var f = new foo; f.bar();
我现在知道怎么改了,该成下面的就行了
foo = function() this.myName = "Foo function.";
foo.prototype.sayHello = function() alert(this.myName);
foo.prototype.bar = function()
setTimeout(this.sayHello(), 1000); // 这里用的this.sayHello() 多一对括号
var f = new foo; f.bar();
但是为什么呢? 请教原因啊
foo = function()
this.myName = "Foo function.";
foo.prototype.sayHello = function()
alert(this.myName);
foo.prototype.bar = function()
var root = this; // 先用变量引用到this指针
setTimeout(function()
root.sayHello(); // 用匿名函数包裹之后再调用
, 1000 );
var f = new foo();
f.bar();
</script>
你的两种方法都是不对的, 虽然第二种看似是输出了正常的结果, 但是你的setTimeout就没起作用.
我给你的这个才是正解
你第一种情况确实是延迟调用到了sayHello函数, 但是问题是调用链出了问题, 其中的this指向window不是f, 所以输出undefined
第二种情况相当于直接调用f.sayHello()确实输出了正确的结果, 但是setTimeout就多余了, 结果是没有延迟直接输出的
参考技术A setTimeout(code,millisec);code 必需。要调用的函数后要执行的 JavaScript 代码串。
millisec 必需。在执行代码前需等待的毫秒数。
this.sayHello是方法名,this.sayHello()是方法,这里需要的是code,所以。。
JS setTimeout 循环传入参数问题
for(var i=0;i<4;i++)
setTimeout(function()
console.log(i);
,0);
这样输出是 4444 我应该怎么做输出0123?
我只是把问题简化,真正的问题必须调用 setTimeout
var str = \'\';
for(var i=0;i<4;i++)
str += i+\'\';
console.log(str)
如果你的项目里必须用计时器,最好把关联的代码都贴出来哦~
参考技术A var i = 0;function m()
alert(i);
i++;
setTimeout(m, 10);
setTimeout("m()", 1000);
解释:setTimeout() 只执行 code 一次。如果要多次调用,请使用 setInterval() 或者让 code 自身再次调用 setTimeout()。 参考技术B 方法1:
for(var i=0;i<4;i++)
setTimeout(function(i)
console.log(i);
, 0, i);
方法2(使用let关键字):
for(let i=0;i<4;i++)
setTimeout(function()
console.log(i);
, 0;
参考技术C
for (var i = 0;i<=100;i++)
// 用new的形式会更好吧
(function (tag)
setTimeout(function ()
console.log(tag);//tag就是i。
,1000*i)//相当于有100个定时器,依次在第1、2、3....100秒后执行。
)(i)
两个关键,一个是参数保存下来,函数也好,对象也好,另一个是每隔多少毫秒执行就用 i 乘以多毫秒
以上是关于请指点js setTimeout的参数的问题的主要内容,如果未能解决你的问题,请参考以下文章