当我发现 ==-
或 ==+
时,我在尝试不同的条件时跌跌撞撞。
在 JS 控制台中,你可以这样写:
var a = " ";
那么下列说法为真
a == " ";
但这是错误的
a == " ";
但是,如果您说:
a ==- " ";
或
a ==+ " ";
那么这个漂亮的 ==-
运算符是什么?
最佳答案
它们不是不同的运算符。
写作:
a ==- " ";
被解析为:
(a) == (-" ");
==+
也是如此。
由于 Javascript 奇怪的类型转换规则,表达式的计算结果为 true
。发生如下情况:
- 一元
-
(或+
)运算符将其操作数转换为数字。如果是空字符串,则转换结果为0
。 a == (-"")
等同于""== 0
。如果与==
比较的类型不同,一个(可能两个)被转换为通用类型。在这种情况下,左侧的""
也被转换为0
。- 您最终将
0
与0
进行比较,结果为true
。
(以上是 Javascript 如何得出此结果的粗略示例,actual rules 隐藏在 ECMAScript specification 中。您可以使用 ===
运算符来防止如果比较对象的类型不同,则返回 false
。)
关于javascript - 这是什么 ==- javascript 运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12442916/