Javascript 构造函数;创造;JS中的无限循环
我注意到构造函数中有一些奇怪的行为。这个代码无限循环,我不知道为什么Javascript 构造函数;创造;JS中的无限循环,javascript,Javascript,我注意到构造函数中有一些奇怪的行为。这个代码无限循环,我不知道为什么 function thing(){ this.start=function(){console.log(this.msg)}; this.msg=“开始…”; setInterval(()=>{this.start()},1000) } 创造一个新事物之所以这样做,是因为setInterval()设置了一个。。。你猜对了间隔,它将继续以您设置的间隔(本例中为1000ms)执行其内容 setTimeout()将以设置的延迟延迟
function thing(){
this.start=function(){console.log(this.msg)};
this.msg=“开始…”;
setInterval(()=>{this.start()},1000)
}
创造一个新事物代码>之所以这样做,是因为setInterval()
设置了一个。。。你猜对了<代码>间隔
,它将继续以您设置的间隔(本例中为1000ms
)执行其内容
setTimeout()
将以设置的延迟延迟执行一次。之所以这样做,是因为setInterval()
设置了。。。你猜对了<代码>间隔,它将继续以您设置的间隔(本例中为1000ms
)执行其内容
setTimeout()
将以设置的延迟延迟执行一次。是否确实要使用setInterval
而不是setTimeout
?前者将每隔1秒调用this.start
,而后者将在1秒后调用一次,
请查看下面解释这两种功能的链接:
setInterval
setTimeout
function thing(){
this.start=function(){console.log(this.msg)};
this.msg=“开始…”;
setTimeout(this.start(),1000)
}
创造一个新事物代码>您确定要使用setInterval
而不是setTimeout
?前者将每隔1秒调用this.start
,而后者将在1秒后调用一次,
请查看下面解释这两种功能的链接:
setInterval
setTimeout
正确的代码段应为:
function thing(){
this.start=function(){console.log(this.msg)};
this.msg=“开始…”;
setTimeout(this.start(),1000)
}
创造一个新事物代码>Yes setInterval将在1秒后调用,因此如果要停止,则需要使用clearInterval。Yes setInterval将在1秒后调用,因此如果要停止,则需要使用clearInterval。来自文档:
定义和用法
setInterval()方法以指定的间隔(毫秒)调用函数或计算表达式
setInterval()方法将继续调用该函数,直到调用clearInterval()或关闭窗口为止
setInterval()返回的ID值用作clearInterval()方法的参数
提示:1000毫秒=1秒
提示:要在指定的毫秒数后只执行一次函数,请使用setTimeout()方法
因此,您可能需要执行以下操作:
function thing(){
this.start=function(){console.log(this.msg)};
this.msg=“开始…”;
setTimeout(()=>{this.start()},1000)
}
创造一个新事物代码>来自文档:
定义和用法
setInterval()方法以指定的间隔(毫秒)调用函数或计算表达式
setInterval()方法将继续调用该函数,直到调用clearInterval()或关闭窗口为止
setInterval()返回的ID值用作clearInterval()方法的参数
提示:1000毫秒=1秒
提示:要在指定的毫秒数后只执行一次函数,请使用setTimeout()方法
因此,您可能需要执行以下操作:
function thing(){
this.start=function(){console.log(this.msg)};
this.msg=“开始…”;
setTimeout(()=>{this.start()},1000)
}
创造一个新事物
setInterval
实际上应该启动一个间隔(定时循环)
另外,您正在执行函数而不是绑定它:)常见错误
onclick="new thing()"
您的代码可以做得更简单:
const start = () => setTimeout( () => console.log(200), 1000)
<button onclick="start">Start!</button>
const start=()=>setTimeout(()=>console.log(200),1000)
开始
在大多数情况下,JS中不需要对象。作为一级对象的函数是JS非常强大的功能。setInterval
实际上应该启动一个间隔(定时循环)
另外,您正在执行函数而不是绑定它:)常见错误
onclick="new thing()"
您的代码可以做得更简单:
const start = () => setTimeout( () => console.log(200), 1000)
<button onclick="start">Start!</button>
const start=()=>setTimeout(()=>console.log(200),1000)
开始
在大多数情况下,JS中不需要对象。作为一级对象的函数是JS非常强大的功能。好吧,您正在调用setInterval
,它将永远循环。这不是你想要的吗?你们都是对的。我没有注意到我的错误。谢谢。我以为我调用东西.start()
时,它进行了某种递归并保持设置间隔。start
不调用东西
,所以这里不可能发生递归。现在我知道了……好吧,您正在调用setInterval
,它将永远循环。这不是你想要的吗?你们都是对的。我没有注意到我的错误。谢谢。我当时想的是,当我调用东西.start()
时,它进行了某种递归并不断设置间隔。start
不调用东西
,所以这里不可能发生递归。现在我知道了……当我看到这个问题时,我实际上在想这个问题,我喜欢这个错误,非常滑稽:)当我看到这个问题时,我实际上在想这个问题,我喜欢这个错误,非常滑稽:)