【发布时间】:2020-08-31 18:37:45
【问题描述】:
我正在写一个Dialog组件,突然想到这个想法。
export const alert = (content: string) => {
const buttons = [<button onClick={()=>closeModal()}>ok</button>] // quite ok
// const buttons = [<button onClick={closeModal}>ok</button>] // raise an error
const closeModal = modal(content, buttons)
}
错误是:在声明之前使用了块范围变量“closeModal”。我习惯于在 React 的函数中包装一些表达式,从来没有想过。
情况可以简化为:
const caller = () => {
func() // ok
}
const funcAgain = func // error
func() // error
const func = () => {}
这种行为叫什么?跟闭包有关系吗?还是变量提升?
【问题讨论】:
标签: javascript reactjs typescript function closures