尝试在 IE 11 中执行以下代码。
var d= new Date();
var lt=d.toLocaleTimeString();
var localeTime= lt.split(“:”);
var str=parseInt(localeTime[0]);
- parseInt 返回 NaN。
- 尝试将 localeTime[0] 处的值直接传递给 parseInt() 。它给出了正确的输出,即传递给 parseInt() 的 String 的数字形式。
- 尝试 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/