注意:咱們這裏通常是討論IE和非IE瀏覽器,更精準的檢測須要結合UA和其餘特性檢測來綜合判斷javascript
1. 垂直製表符html
'\v'的轉義問題,利用瀏覽器對轉義字符'\v'的理解java
IE瀏覽器不能識別\v爲一種轉義字符,會直接輸出vchrome
其餘瀏覽器(目前驗證safari\chrome)會轉義爲垂直製表符,大約等同於""一個空格express
// ie會生成爲v1,right-expression遇到+會轉化爲字符串拼接,但left-expression爲空,會轉爲數字加法, 能夠了解下+[]爲何等於0 // 因此ie +"v1"等到的結果就是NaN var ie = !+"\v1"; //false, ie
2: 利用瀏覽器的JS引擎解析不一樣瀏覽器
咱們在寫一個類Json結構的object的js對象時,如ide
{ name: "test", key: "key", value: false, }
這段代碼在IE的引擎下會報錯爲: 不指望的結束符,緣由在於value結束後 ','號瀏覽器解析錯誤,因此這個方法是充分利用瀏覽器的糾錯功能來作的判斷ui
那麼[1,]在IE調用toString方法將會解析"1," 在標準瀏覽器中會剔除',',注意區分ArrayList中[,3,,4,]missing的是哪些索引,能夠看MDN的解釋spa
if (!+[1,]) { // ie } else { // 標準瀏覽器 } // 操做符+當左表達式不存在時會試圖把右表達式轉化爲number // +[] // +[]的轉化過程能夠這樣來解釋 // Number([]) // Number([].toString()) // [].valueOf() isn’t primitive // Number("") // 0
擴展: +[]能夠查看code