0

为什么swiss undefined在 this中引用setInterval

在每次迭代中,swiss都会传入 的值。

export default function cheese() {
    const swiss = useRef("Jarlsberg")
    const myInterval = useRef()
    myInterval.current = setInterval ( swiss => {
        console.log(swiss) //-> undefined
        console.log(swiss.current) //-> Error b/c undefined has no properties
    }, 997)
}
4

1 回答 1

2

那是因为你用setInterval错了。在你的箭头函数中,你有swiss一个参数,而不是一个参数(你传递的值)。当setInterval调用你的箭头函数时,它不传递任何参数,因此为什么swissundefined.

编辑:您可能还swiss用参数名称“隐藏”了实际值。通过我的测试,如果您删除参数或更改其名称,swiss则可以在调用中使用。setInterval

export default function cheese() {
    const swiss = useRef("Jarlsberg")
    const myInterval = useRef();
    myInterval.current = setInterval ( () => { // note the change from `swiss` to an empty ().
        console.log(swiss) //-> exists!
        console.log(swiss.current) //-> Jarlsberg
    }, 997)
}
于 2020-09-25T15:42:05.333 回答