为什么箭头函数名称必须为const / let?

时间:2019-07-23 10:13:55

标签: typescript react-native tsx

我有一个带有react-native的tsx文件。如果函数未设置为const或不显示此消息,则我的函数名称带有下划线:

  

找不到名称“ goBack”

goBack = () => {
    // do stuff
}

但是如果我设置const或let,它就会起作用:

const goBack = () => {
    // do stuff
}

为什么?

1 个答案:

答案 0 :(得分:5)

这与箭头功能无关。您正在尝试为尚未在任何地方声明的标识符分配一个值。

此:

goBack = () => {
    // do stuff
}

将箭头功能分配给已经声明的标识符goBack。 (或者,如果它在class内,它将创建一个新属性并为其分配箭头功能-但是我们知道您不在类中这样做,因为您的const版本会如果你失败了。)

这就像:

answer = 42;

如果未声明answer,则会从TypeScript中收到错误消息。

此:

const goBack = () => {
    // do stuff
}

创建一个局部变量(很好,常量),并为其分配箭头功能,就像:

const answer = 42;

记住箭头函数没有声明语法是很有用的。箭头功能始终是一个表达式。示例中=左侧的部分不是表达式的一部分(尽管有些令人惊讶,它可以have an effect on the function that's created)。