Internet Explorer 11 JavaScript 中字符串数组的奇怪行为
Strange Behavior of the string array in JavaScript on Internet Explorer 11
尝试在 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]===Value。输出为假。
如果你 运行 localeTime[0].length
你会看到它 returns 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 在标记的开始和结束。
为了使其正常工作,您需要通过删除所有非字母数字字符来规范化字符串。
parseInt(localeTime[0].replace(/\W/, '')) // returns 20 as expected
尝试在 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]===Value。输出为假。
如果你 运行 localeTime[0].length
你会看到它 returns 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 在标记的开始和结束。
为了使其正常工作,您需要通过删除所有非字母数字字符来规范化字符串。
parseInt(localeTime[0].replace(/\W/, '')) // returns 20 as expected