为什么箭头函数名必须是const/let?
Why arrow function name must be const/let?
我有一个带有 react-native 的 tsx 文件。如果函数未设置为 const 或 let 并显示此消息,我的函数名称将带有下划线:
Cannot find name 'goBack'
goBack = () => {
// do stuff
}
但是如果我设置 const 或 let 就可以了:
const goBack = () => {
// do stuff
}
为什么?
这与箭头函数没有任何关系。您正在尝试为未在任何地方声明的标识符赋值。
这个:
goBack = () => {
// do stuff
}
将箭头函数分配给已经声明的标识符goBack
。 (或者,如果这是在 class
中,它会创建一个新的 属性 并将箭头函数分配给它——但我们知道你不会在 class 中这样做,因为如果你这样做,你的 const
版本就会失败。)
完全像:
answer = 42;
如果未声明 [=17=],TypeScript 会报错。
这个:
const goBack = () => {
// do stuff
}
创建一个局部变量(嗯,常量)并将箭头函数分配给它,就像:
const answer = 42;
记住箭头函数没有 声明 语法是很有用的。箭头函数始终是一个表达式。您示例中 =
左侧的部分不是该箭头函数表达式的一部分(尽管有些令人惊讶的是,它可以 )。
我有一个带有 react-native 的 tsx 文件。如果函数未设置为 const 或 let 并显示此消息,我的函数名称将带有下划线:
Cannot find name 'goBack'
goBack = () => {
// do stuff
}
但是如果我设置 const 或 let 就可以了:
const goBack = () => {
// do stuff
}
为什么?
这与箭头函数没有任何关系。您正在尝试为未在任何地方声明的标识符赋值。
这个:
goBack = () => {
// do stuff
}
将箭头函数分配给已经声明的标识符goBack
。 (或者,如果这是在 class
中,它会创建一个新的 属性 并将箭头函数分配给它——但我们知道你不会在 class 中这样做,因为如果你这样做,你的 const
版本就会失败。)
完全像:
answer = 42;
如果未声明 [=17=],TypeScript 会报错。
这个:
const goBack = () => {
// do stuff
}
创建一个局部变量(嗯,常量)并将箭头函数分配给它,就像:
const answer = 42;
记住箭头函数没有 声明 语法是很有用的。箭头函数始终是一个表达式。您示例中 =
左侧的部分不是该箭头函数表达式的一部分(尽管有些令人惊讶的是,它可以