这是什么 ==- javascript 运算符

What is this ==- javascript operator?

本文关键字:运算符 javascript 是什么      更新时间:2023-09-26

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

在 JS 控制台中,您可以编写:

var a = " ";

那么以下情况是正确的

a == " ";

但这是错误的

a == "    ";

但是,如果您说:

a ==- "   ";

a ==+ "   ";

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

它们不是不同的运算符。

写作:

a ==- " ";

解析为:

(a) == (-" ");

==+也是如此.

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

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

(以上是Javascript如何得出这个结果的粗略例子,实际的规则隐藏在ECMAScript规范中。您可以改用 === 运算符来阻止转换,并在比较对象的类型不同时获取false

它只是一个==后跟一个-(或+(。

(在下文中,我写"<four spaces>"表示由四个空格组成的字符串。

也就是说,如果你做" " ==- "<four spaces>",你把" "比作-"<four spaces>"-"<four spaces>"的计算结果为 0,因为应用减号转换为整数。因此,您实际上执行 " " == 0 ,这是正确的,因为它将" "转换为整数进行比较。

但是," " == "<four spaces>"是错误的,因为您正在比较两个不同的字符串。

这不是运算符。您得到这些结果是因为-+将字符串转换为数字,在这种情况下,空字符串将转换为数字0然后解释为false,加上等于运算符==会导致比较和强制转换的一些麻烦,这就是为什么建议始终使用 === 运算符,您将获得所需的结果:

console.log(a === ' '); // true
console.log(a === '   '); // false
console.log(a === -'   '); // false
console.log(a === +'   '); // false