当我发现== – 或==时,我在尝试不同的条件时磕磕绊绊.
在JS控制台中,您可以编写:
var a = " ";
那么以下是真的
a == " ";
但这是错误的
a == " ";
但是,如果你说:
a ==- " ";
要么
a ==+ " ";
那么这个漂亮的== – 运算符是什么?
解决方法
他们不是独特的操作符.
写作:
a ==- " ";
被解析为:
(a) == (-" ");
==也是如此.
由于Javascript的奇怪的类型转换规则,表达式的计算结果为true.发生以下情况:
>一元 – (或)运算符将其操作数转换为数字.如果它是空字符串,则此转换的结果为0.
> a ==( – “”)则等于“”== 0.如果与==比较的类型不同,则一个(可能是两个)转换为获得公共类型.在这种情况下,左侧的“”也会转换为0.
>您最终将0与0进行比较,结果为真.
(以上是Javascript如何得出这个结果的一个粗略示例,actual rules隐藏在ECMAScript specification中.如果比较对象的类型不同,您可以使用===运算符来防止转换并获取错误. )