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)