setTimeout()函数会改变this指针指向

let fun1 = (x) => {
    console.log(x)
}
// 立即执行,失效。 
setTimeout(fun1("zmz2001.com"), 3000) 

问题

可能是因为this指针指向问题,此时this指针指向的是 window 对象。访问不到传入参数的值。(不确定)

解决

1、匿名函数

// 使用匿名函数包装,正常。
setTimeout(function() {
    console.log("zmz2001.com")
}, 3000)

2、JS闭包

let fun2 = (x) => {
    return () => {
        console.log(x)
    }
}
// 闭包解决,正常。
setTimeout(fun2("zmz2001.com"), 3000)
最后修改:2022 年 05 月 01 日 11 : 02 PM
赏杯咖啡喝 谢谢您~