javascript - (a == b && b == c) 的缩写形式

标签 javascript

我想比较三个变量是否全部相等。当然,这是不起作用:

(a === b === c) // beware: true on (true === false === false)

所以我用了

(a === b && b === c)

但我想知道是否有一种更短的形式(如第一个形式 - 但有效),其中每个变量仅评估一次

编辑:

我的用例是以下表达式:

(typeof a === typeof b && typeof b === typeof c)

我想避免

  • 评估 typeof b 两次
  • typeof b 放入变量

最佳答案

不,抱歉,没有。如果你真的愿意,你可以创建一个辅助函数:

function Test3(a,b,c) { return a === b && b === c; }

这样打字会更短,但也有缺点:

  • 这有点间接,因此代码会更难阅读。
  • 它可能会更慢,因为需要进行函数查找和调用。然而,现代 JS 引擎可能有优化来抵消这一点。如果此操作的性能至关重要,则需要更好的基准来确保。
  • 虽然每个表达式只会被求值一次,但它们都会始终被求值。

为了解决所有这些缺点,我们可以这样写:

var b = ExpressionB;
if ( ExpressionA === b && ExpressionC === b ) { ... }

但是,这非常冗长,并且包含一个临时变量(无论如何这是不可避免的,因为您需要比较 ExpressionB 两次,但只计算一次)。

关于javascript - (a == b && b == c) 的缩写形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26421433/

相关文章:

javascript - 调整 Canvas 大小而不减少其宽度和高度(坐标)

嵌套 lambda 表达式的 Javascript 编码样式

javascript - 没有模板引擎的 Node View 传递的数据

javascript - 如何从angularjs中给定的json数据中获取质量率

javascript - element.classList.contains() 和 element.matches() 有什么区别

javascript - Selenium webdriver driver.findElement() 方法返回对象 - 为什么?我做错了什么?

javascript - typeof() 在条件开始之前中断

php - 分页页面 ID 有问题

javascript - 为什么我在这里得到未定义?

javascript - 对象原型(prototype)和继承