Javascript-URL的奇怪字符串比较行为

本文关键字:比较 字符串 Javascript-URL | 更新日期: 2023-09-27 18:26:37

最近我在编写无法理解的javascript时遇到了字符串比较问题。

我从完全相同的Url创建了两个字符串,当我比较它们时,它会返回false,但在重新分配相同的字符串后,比较会返回true。

这是我的例子:

var str1 = "http://google.com/";
var str2 = "http://google.com‏/";
var eq = str1 == str2;
alert(eq); //print false

str1 = "http://google.com/";
str2 = "http://google.com/";
eq = str1 == str2;
alert(eq); //print true

这是小提琴

我也用C#写了同样的代码,结果是一样的,为什么会发生这种情况,如果有任何帮助,我们将不胜感激。

Javascript-URL的奇怪字符串比较行为

com/之间的第二个字符串中有一个不可见的字符,您可以使用以下foreach循环验证:

foreach(var c in str2)
        Console.WriteLine(c);

它打印

h
t
t
p
:
/
/
g
o
o
g
l
e
.
c
o
m
‏
/

所以这就是它返回false的原因。顺便说一句,我只是复制/粘贴你的代码,当我手动编写它时,它不会发生。