Javascript 如何调用没有';现在还不能宣布

Javascript 如何调用没有';现在还不能宣布,javascript,react-native,ecmascript-6,Javascript,React Native,Ecmascript 6,我的代码中有: const [dimensions, setDimensions] = useState(getDimensions()) const getDimensions = () => { // stuff } 调用该函数时未声明该函数,因此出现错误。但是,如果我将其声明为传统函数,则不会发生错误 const [dimensions, setDimensions] = useState(getDimensions()) function getDimensions()

我的代码中有:

const [dimensions, setDimensions] = useState(getDimensions())

const getDimensions = () => {
   // stuff
}
调用该函数时未声明该函数,因此出现错误。但是,如果我将其声明为传统函数,则不会发生错误

const [dimensions, setDimensions] = useState(getDimensions())

function getDimensions() {
   // stuff
}

使用箭头函数有什么方法可以做到这一点吗?

我无法解释为什么箭头函数和传统函数的行为不同

但若您想使用arrow函数,那个么您可以更新代码以设置初始状态,并且只在使用useffect挂载组件后调用getDimensions

例如:

const [dimensions, setDimensions] = useState({})

const getDimensions = () => {
   // stuff
}
useEffect(()=> {
  getDimensions()
}, [])

这是因为在arrow函数示例中,您正在声明一个函数表达式。函数表达式未被提升。如果需要使用箭头函数,则需要在使用前声明。

否。您必须先声明它,或者使用函数声明。否。为什么不在使用它之前简单地定义它呢?我通常在类的顶部定义状态,在底部定义函数,这仅仅是因为“您正在声明一个函数表达式”——具体来说,您正在声明一个
const
,并用任意表达式初始化它(在本例中,它恰好是一个箭头函数文字)。和。@Bergi因此,如果您使用
var
初始化了一个箭头函数,那么它将被提升并被称为w/o error?@Hyetigran否,
var
初始化器也不会被提升,但是
var
s隐式初始化为
undefined
,因此在尝试调用它时,您将得到一个不同的错误。