javascript - 这是什么 ==- javascript 运算符?

标签 javascript

当我发现 ==-==+ 时,我在尝试不同的条件时跌跌撞撞。

在 JS 控制台中,你可以这样写:

var a = " ";

那么下列说法为真

a == " ";

但这是错误的

a == "    ";

但是,如果您说:

a ==- "   ";

a ==+ "   ";

那么这个漂亮的 ==- 运算符是什么?

最佳答案

它们不是不同的运算符。

写作:

a ==- " ";

被解析为:

(a) == (-" ");

==+ 也是如此。

由于 Javascript 奇怪的类型转换规则,表达式的计算结果为 true。发生如下情况:

  1. 一元-(或+)运算符将其操作数转换为数字。如果是空字符串,则转换结果为0
  2. a == (-"") 等同于 ""== 0。如果与 == 比较的类型不同,一个(可能两个)被转换为通用类型。在这种情况下,左侧的 "" 也被转换为 0
  3. 您最终将 00 进行比较,结果为 true

(以上是 Javascript 如何得出此结果的粗略示例,actual rules 隐藏在 ECMAScript specification 中。您可以使用 === 运算符来防止如果比较对象的类型不同,则返回 false。)

关于javascript - 这是什么 ==- javascript 运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12442916/

相关文章:

javascript - 如何在获取 api 中处理 HTTP 代码 4xx 响应

javascript - 如何在 Google Chart 中设置轴步长?

javascript排序函数两个字段(条件)

javascript - 在 Javascript 中使用 Nasa Neo API 的嵌套 for 循环访问数据

javascript - AngularJs - 确认对话框导致错误 "$digest already in progress"

javascript - ThreeJS r75 - TypeError : THREE. 动画不是构造函数

javascript - chrome扩展内容脚本无法按类获取元素

javascript - 需要 2 个函数来使用 Ajax 运行 onLoad - 只有 1 个函数可以工作

javascript - 纯 ReactJS 组件

javascript - IE8 标准不支持 array.map 函数?