这是什么 ==- javascript 运算符
What is this ==- javascript operator?
当我发现==-
或==+
时,我正在尝试不同的条件
在 JS 控制台中,您可以编写:
var a = " ";
那么以下情况是正确的
a == " ";
但这是错误的
a == " ";
但是,如果您说:
a ==- " ";
或
a ==+ " ";
那么这个漂亮的==-
运算符是什么?
它们不是不同的运算符。
写作:
a ==- " ";
解析为:
(a) == (-" ");
==+
也是如此.
由于 Javascript 奇怪的类型转换规则,表达式的计算结果为 true
。将发生类似以下情况:
- 一元
-
(或+
(运算符将其操作数转换为数字。如果是空字符串,则此转换的结果为0
。 - 然后
a == (-" ")
等效于" " == 0
。如果与==
相比的类型不同,则转换一个(可能两个(以获取通用类型。在这种情况下,左侧的" "
也会转换为0
。 - 你最终将
0
与0
进行比较,这会产生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
相关文章:
- 这是什么 ==- javascript 运算符
- Javascript逻辑运算符和字符串/数字
- Javascript,如果条件在没有&&逻辑运算符当&&它不起作用
- 如果在构造函数中有“返回”,则在 JavaScript 中的新运算符中做了什么
- JavaScript 中三元条件和逻辑和运算符的运算符优先级
- JavaScript-===vs===运算符性能
- 在 Jquery/Javascript 中使用多个 OR (||) 运算符时如何设置变量
- 在 JavaScript 对象中设置要使用的运算符的属性
- 哪个JavaScript相等运算符(==或===)更快
- 用javascript中的三元运算符连接字符串
- 应该在什么时候使用Javascript条件运算符
- 我可以在不使用乘法运算符“”的情况下进行乘法运算吗*"在JavaScript中
- 什么时候可以对条件参数使用管道运算符?-JavaScript
- 如何使用逻辑运算符 JavaScript 或 jQuery
- 使用余数运算符Javascript对奇数和偶数进行排序
- 右移运算符 - Javascript
- 使用空数组时比较运算符 JavaScript 的奇怪行为
- 在条件中使用逻辑运算符和比较运算符(javascript)
- 动态运算符javascript
- 逻辑运算符&&javascript中的两个字符串