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

标签 javascript internet-explorer-11

尝试在 IE 11 中执行以下代码。

var d= new Date();
var lt=d.toLocaleTimeString();
var localeTime= lt.split(“:”);
var str=parseInt(localeTime[0]);
  1. parseInt 返回 NaN。
  2. 尝试将 localeTime[0] 处的值直接传递给 parseInt() 。它给出了正确的输出,即传递给 parseInt() 的 String 的数字形式。
  3. 尝试 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 中也有两个 additional characters在 token 的开始和结束处。

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

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

关于javascript - Internet Explorer 11 上 JavaScript 中字符串数组的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39776871/

相关文章:

javascript - 如何实现 jQuery keyup 的延迟?

html - 即 11 : Element with min-height: 100vh will cause scrollbar

javascript - jQuery 弹出窗口在 IE11 企业模式下不起作用

javascript - AES-KW 的 unwrapKey 函数在 IE11 中不起作用

html - maxlength 和 minlength 不验证 IE 中的 HTML 文本框

IE11 上的 Angular 4 性能/CPU 使用率

javascript - 根据单击的类别过滤器隐藏/显示 li 项

javascript - 哪些网络浏览器不支持 Javascript?以及如何识别客户端使用的是哪个浏览器?

javascript - 是否有 ramda 函数可以帮助您将日志记录添加到管道/组合中?

javascript - 如何访问 promise 内 promise 返回的值