在 Javascript 函数中不给表达式赋值是否合法?

Is it legal to have expressions not assigned to values in Javascript functions?

我确定这是重复的,但我找不到原始问题,所以如果您知道,请 link 回复。

在Javascript我目前正在写一个函数,我很想这样写:

function toggleDropdown() {
  isOpen() ? closeDropdown() : openDropdown(); 
}

然而,这感觉有点奇怪,因为三元运算符是一个表达式,closeDropdownopenDropdown 都不是 return 值(除了隐式未定义),而且我我没有将三元的 return 值分配给任何东西。

我意识到 Javascript 似乎允许您任意计算并且没有分配给任何表达式。例如,显然下面的这段代码不会抛出任何错误:

function test() {
  55;
  "asdf";
  let x = 12;
  "qwer";
  12;
}

我觉得哪个有点奇怪?我想知道,这段代码“可以”写吗?它似乎没有抛出任何错误,但我担心它会在使用 Babel 或其他东西的某种编译步骤中中断,因为这段代码看起来有点不正统。或者它可能完全受支持?

一切都很好。您不必对表达式的结果执行任何操作。

这与调用函数 returns 一个值,而不是分配或使用该值真的没有什么不同。

对于原始值,如果您正在优化代码,它们很可能会被优化掉。

话虽如此,您的 linter 可能配置为针对未分配的表达式实际发出警告或错误,因此在这种情况下您的有效语法将显示为问题。