为什么~NaN,~null,~false,~undefined都是-1

今天在看位操作符,在非(NOT)小节中,非是指返回数值的反码。本质是操作数的负值减1。

如 ~2 = -3.

但用Number()对上述四个值取值分别是

Number(NaN) = NaN,
Number(null) = 0,
Number(false) = 0,
Number(undefined) = NaN.

但取非值为什么都是一样的捏?

阅读 2.8k
1 个回答

因为ECMAScript规定,两张图告诉你一切!

图片描述
图片描述

所以说,他们最终的结果都是 0,自然 ~0===-1了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题