如何解决 JavaScript 中带有 => 的布尔表达式和箭头函数之间的歧义?

问题描述 投票:0回答:1

当使用

=>
计算布尔表达式时,它实际上被计算为箭头函数,例如在条件分支的上下文中。

let x = -1
if (x => 0) {
  console.log("true")
} else {
  console.log("false")
}

这段代码会输出

true
,因为表达式
x => 0
变成了一个匿名函数对象,这是真的。

一个明显的解决方案是使用

<=
反转整个布尔表达式,这样就不会受到箭头函数语法的歧义的影响。但这有可能在布尔代数的背景下显着降低可读性,这已经有点难以直观地推理。

if (0 <= x) {
  console.log("true");
} else {
  console.log("false");
}

在 TypeScript 中,问题本质上是相同的,尽管 no-implicity-any 错误可以给出提示。

是否有一种惯用的方法来强制使用大于或等于语义进行布尔求值?

javascript typescript arrow-functions
1个回答
-1
投票
let x = -1;
if (x >= 0) {
  console.log("true");
} else {
  console.log("false");
}

这是条件的正确写法。

>=
是比较一个值是否大于或等于另一个值的正确运算符。 箭头函数使用
=>
语法,没有比较意义。

© www.soinside.com 2019 - 2024. All rights reserved.