toUpperCaseFunction不适用于await关键字

我试图使用这样的 if 子句:

if(await database.getValue("SDA").toUpperCase() == "AP"){
   ...

我有一个错误:

类型错误:database.getValue(...).toUpperCase 不是函数

但是,当我将上述 if 子句更改为

let check = await database.getValue("SDA")
if(check.toUpperCase() == "AP"){
  .....

它工作正常。

为什么在 Nodejs 中会发生这种情况?

回答

属性访问 ( .) 具有比(17)更高的运算符优先级(20 await)。您当前的代码相当于:

if(await (database.getValue("SDA").toUpperCase()) == "AP"){

因为在尝试解析右侧的表达式.之前 s 被链接在一起await- 这不起作用,因为getValue调用返回了 Promise。

您还可以通过将await getValue调用分组在括号中来修复它:

if((await database.getValue("SDA")).toUpperCase() == "AP"){

或者通过使用正则表达式来绕过==运算符优先级(请参阅修订历史,我不推荐它,这很奇怪)。

就个人而言,我更喜欢您将其提取到变量中的原始代码,它更具可读性


以上是toUpperCaseFunction不适用于await关键字的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>