首页 > 解决方案 > 为什么箭头函数名称必须是 const/let?

问题描述

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

找不到名称“goBack”

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

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

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

为什么 ?

标签: typescriptreact-nativetsx

解决方案


这与箭头函数没有任何关系。您正在尝试为未在任何地方声明的标识符分配值。

这:

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

将箭头函数分配给已声明的标识符goBack。(或者,如果它在 aclass中,它会创建一个新属性并将箭头函数分配给它——但我们知道你没有在类中这样做,因为const如果你这样做,你的版本会失败。)

就像:

answer = 42;

如果answer没有声明,你会从 TypeScript 中得到一个错误。

这:

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

创建一个局部变量(嗯,常量)并将箭头函数分配给它,就像:

const answer = 42;

记住箭头函数没有声明语法是很有用的。箭头函数始终是一个表达式。您的示例中左侧的部分=不是该箭头函数表达式的一部分(尽管有些令人惊讶的是,它会对创建的函数产生影响)。


推荐阅读