使用(!+"\v1")判斷是否是IE瀏覽器

之前在一牛人博客上面看到(!+"\v1")這種寫法,然後馬上找度娘,找到答案。

其實就是利用了ie的一個bug。

在ie瀏覽器中,"\v"沒有轉義,得到的結果爲"v"
而在其他瀏覽器中"\v"表示一個垂直製表符(一定程度上相當於空格)

所以ie解析的"\v1" 爲 "v1"
而其他瀏覽器解析到 "\v1" 爲 "1"

在前面加上一個"+"是爲了把後面的字符串轉變成數字
由於ie認爲"\v1"爲"v1",所以前面的加上加號無法轉變成數字,爲NaN
其他瀏覽器均能變成 1

在js中,進行邏輯判斷時可使用數字,並且 0 爲 false,其他數字則爲true
所以 !1 = false ,於是其他瀏覽器均返回false

js在遇到如下幾個值會返回false:undefined、null、NaN,所以ie中 !NaN = true

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章