Javascript 字符串拆分数组中的不一致导致IE 11

Javascript 字符串拆分数组中的不一致导致IE 11,javascript,internet-explorer,Javascript,Internet Explorer,注意:我在这里提到的问题只发生在IE中(我使用过IE 11)。它在所有其他浏览器中都可以正常工作 发行说明: 我正在使用stringsplit方法使用定界器拆分字符串。在我的例子中,定界符是“/” 分歧如预期的那样起了作用。然而,当我从结果数组中取出值进行比较时,它给出了奇怪的结果。我在评论中提到了每一行的结果。有人能告诉我怎么解决这个问题吗 var d = new Date(9999, 11, 31); var sDateString = d.toLocaleDateString();//RE

注意:我在这里提到的问题只发生在IE中(我使用过IE 11)。它在所有其他浏览器中都可以正常工作

发行说明: 我正在使用stringsplit方法使用定界器拆分字符串。在我的例子中,定界符是“/”

分歧如预期的那样起了作用。然而,当我从结果数组中取出值进行比较时,它给出了奇怪的结果。我在评论中提到了每一行的结果。有人能告诉我怎么解决这个问题吗

var d = new Date(9999, 11, 31);
var sDateString = d.toLocaleDateString();//RETURNED "12/31/9999"
var aResult = sDateString.split("/");
console.log(aResult);//THIS GAVE THE RESULT ["‎12‎", "‎31‎", "‎9999"]
console.log(aResult[0]);//THIS GAVE THE RESULT 12. THIS IS AS EXPECTED
console.log(aResult[0]=="12");//RESULT IS false!!. MY EXPECTATION WAS ture HERE
console.log(aResult[0]==="12");//RESULT IS false!!. MY EXPECTATION WAS ture HERE
console.log(parseInt(aResult[0].trim()));//RESULT IS NaN!!. I EXPECTED NUMBER 12
问候,


Fahad Hamsa

出于某种原因,IE11添加了
\u200e
字符-即
Unicode字符“从左到右标记”
-请参见

所以

结果
sDateString
*12*/*31*/*9999
-其中
*
\u200e

最简单的修复

var sDateString = (new Date()).toLocaleDateString().replace(/\u200e/g, '');

这个不会打破真正的浏览器,但它应该修复愚蠢的浏览器:p

解决了这个问题。。谢谢。。当我打印时,我看不到任何可能导致此问题的内容。为了更加确定数据,我使用了trim()。我想知道为什么trim()在这里也不起作用。这个特殊字符也是trim()无法触及的。split()是一个JS方法,看到每个浏览器都以自己的方式解释JS方法,真让人难过(您是如何知道这个问题和解决方案的?。是否有任何文档可用?TM trims spaces…因此,这些标记字符不被视为空格-我是如何知道的?我尝试复制您的问题…我复制/粘贴了代码(带有您的注释),并立即在我的编辑器中看到“附加”字符-幸运的是,你从IE控制台复制/粘贴,否则它不会很明显-所以,我不知道,但你的复制/粘贴使它可见:pI在IE控制台中尝试,它没有任何关于特殊字符的指示。而且,在记事本++上也没有看到任何指示。你使用了哪种编辑器。对不起,我不清楚,我是d我看不到记事本++中的字符实际上是什么,只是它们存在……看,我打开了一个新文档,编码设置为ANSI(新计算机,我通常将我的新文档设置为UTF-8-又一次幸运!!)只是因为它被设置为ANSI,我才看到问号,通常在记事本++中根本看不到这些字符-无论如何,这个?让我好奇,我在JSFIDLE中发布了你的代码-这些隐藏字符的值就是在这里显示的
var sDateString = (new Date()).toLocaleDateString().replace(/\u200e/g, '');