javascript - 为什么 ~-(2 + "2") 是 21?

标签 javascript operators

我在测试中看到了这道题,但我不明白运算符是如何处理语句的。

let a = ~-(2 + "2");
console.log(a);

最佳答案

~-(2 + "2")
  • 0:2 + "2"(串联)= "22"
  • 1: -"22"(强制转换)= -22
  • 2:~-22(按位非)= -(-22 + 1)= 21

Bitwise NOTing any number x yields -(x + 1). For example, ~-5 yields 4.

关于javascript - 为什么 ~-(2 + "2") 是 21?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48875711/

相关文章:

c++ - 对浮点值使用 += 运算符

javascript - javascript 文件中的 Codeigniter( Controller )文件路径

javascript - 划线粗底细顶-车速表指针

vb6 - Visual Basic 6.0 中的运算符优先顺序是什么?

java - 为什么 int 变量值在 Integer.MIN_VALUE 处并递减时设置为 Integer.MAX_VALUE

c - 运算符优先级背后的逻辑

javascript - 使用 JavaScript 和 JQuery 从表单中检索 key

javascript - 我解决了与 IE9 相关的正则表达式问题,但我不确定它如何或为何工作

javascript - 检测 Angular 上的属性变化

linux - 逻辑与操作的困惑