Internet Explorer 11上JavaScript中字符串数组的奇怪行为

Internet Explorer 11上JavaScript中字符串数组的奇怪行为,javascript,internet-explorer-11,Javascript,Internet Explorer 11,在IE11中尝试以下代码 var d= new Date(); var lt=d.toLocaleTimeString(); var localeTime= lt.split(“:”); var str=parseInt(localeTime[0]); parseInt正在返回NaN 尝试将localeTime[0]处的值直接传递给parseInt()。它给出了正确的输出,即传递给parseInt()的字符串的数字形式 请尝试localeTime[0]==localeTime[0]处的值。输出

在IE11中尝试以下代码

var d= new Date();
var lt=d.toLocaleTimeString();
var localeTime= lt.split(“:”);
var str=parseInt(localeTime[0]);
  • parseInt正在返回NaN
  • 尝试将localeTime[0]处的值直接传递给parseInt()。它给出了正确的输出,即传递给parseInt()的字符串的数字形式
  • 请尝试localeTime[0]==localeTime[0]处的值。输出为假

  • 如果运行
    localeTime[0].length,您将看到它返回
    4

    localeTime[0] // "20"
    localeTime[0].length // 4
    x.charCodeAt(0) // 8206 -> ???
    x.charCodeAt(1) // 50 -> "2" as expected
    x.charCodeAt(2) // 48 -> "0" as expected
    x.charCodeAt(3) // 8206 -> ???
    
    出于某种原因,在IE中,令牌的开头和结尾也有两个

    为了使其正常工作,您需要通过删除所有非字母数字字符来规范化字符串

    parseInt(localeTime[0].replace(/\W/, '')) // returns 20 as expected
    

    为什么不调用适当的getter呢?也会失败,原因是
    Number(localeTime[0])我会这样做的,我只是想知道为什么parseInt()不能将字符串从数组转换为数字。检查:MS声称这是一项功能。感谢大家的快速回复。@JonSG让我看一下你发送的链接。感谢Yariash澄清这个概念。