JS setTimeout 循环传入参数问题

JavaScript014

JS setTimeout 循环传入参数问题,第1张

//不需要计时器

var str = ''

for(var i=0i<4i++){

    str += i+''   

}

console.log(str)

如果你的项目里必须用计时器,最好把关联的代码都贴出来哦~

setTImeout第一个参数必须是一个可执行的函数,你第二副图传的是一个表达式,是没有返回值的。

可以有如下写法:

1、你的第一种写法

2、setTimeout(handle, 1000)

function handle() {location.href=xxx}

3、setTimeout(()=>location.href=xxx)

无论是window.setTimeout还是window.setInterval,在使用函数名作为调用句柄时都不能带参数,而在许多场合必须要带参数,这就需要想方法解决。经网上查询后整理如下:\x0d\x0a例如对于函数hello(_name),它用于针对用户名显示欢\x0d\x0a迎信息:\x0d\x0avar userName="jack"\x0d\x0a//根据用户名显示欢迎信息\x0d\x0afunction hello(_name){\x0d\x0a alert("hello,"+_name)\x0d\x0a}\x0d\x0a这时,如果企图使用以下语句来使hello函数延迟3秒执行是不可行的:\x0d\x0awindow.setTimeout(hello(userName),3000)\x0d\x0a这将使hello函数立即执行,并将返回值作为调用句柄传递给setTimeout函数,其结果并不是程序需要的。而使用字符串形式可以达到想要的结果:\x0d\x0awindow.setTimeout("hello(userName)",3000)这是方法(一)\x0d\x0a这里的字符串是一段JavaScript代码,其中的userName表示的是变量,而且经测试,这个变量要是个全局的,如果是在某函数里面如此调用 setTimeout,而此变量只是个函数内部变量的话,是会报变量不存在的。但这种写法不够直观,而且有些场合必须使用函数名,于是有人想到了如下\x0d\x0a方法(二):\x0d\x0a