的IE(微軟邊緣25.10)數組這是直接從控制檯:IE Date.toLocaleTimeString()拆分未被返回一個字符串
greg = new Date().toLocaleTimeString().split(':')[0];
"12"
greg = new Date().toLocaleTimeString().split(':')[0]=="12";
false
爲什麼呢?
的IE(微軟邊緣25.10)數組這是直接從控制檯:IE Date.toLocaleTimeString()拆分未被返回一個字符串
greg = new Date().toLocaleTimeString().split(':')[0];
"12"
greg = new Date().toLocaleTimeString().split(':')[0]=="12";
false
爲什麼呢?
這是因爲有串兩個不可見的字符:U-200E(左到右引號)在開頭和結尾:
new Date().toLocaleTimeString().split(':')[0] == "\u200e12\u200e" // true
toLocaleTimeString
由ECMA-402定義here瀏覽器是否支持ECMA-402 ;否則,這完全取決於實施。 IE不支持ECMA-402,因此它可以將任何東西放入喜歡的字符串中。包括左到右標記似乎做一個奇怪的事情,但...
哇......謝謝。看起來我有一些閱讀要做。我從來沒有聽說過這個你說的 – rikkitikkitumbo
T.J:任何想法,爲什麼IE做到這一點? Chrome似乎沒有... – Cerbrus
@Cerbrus:沒有。 : - |坦率地說,這似乎是一件奇怪的事情。 –
奇怪的是,似乎有在那個時間字符串周圍的數一些不可見的字符:
這可以迴避/通過解析分裂部爲整數解決:
var part = new Date(2016, 00, 01, 10, 55, 30) // Fri Jan 01 2016 10:55:30
.toLocaleTimeString().split(':')[0];
console.log(part);
console.log(part == "10");
console.log(parseInt(part) == 10);
什麼版本的IE? –
12是我ENV中的小時,也可能當你執行第二個代碼時變成「13」。 – Jesse