一个被称为世界上最短的判断IE方法

最近偶然看到一段判断是否为IE浏览器的代码:

1 if(!+[1,]) {
2    console.info("IE 浏览器");  
3 } else {
4     console.info("非 IE浏览器");
5 }

短短的几个字节就判断出当前浏览器是否为IE浏览器,有意思。

最后看了这里才知道原来是使用了IE浏览器自身编译js代码上的区别才明白;

原来在IE浏览器中如果 +[1,] IE浏览器解析的顺序是[1,].toString()-->'1,' 而 '1,'-->Number('1,') -->NaN;在非IE浏览器中+[1,] js解析的时候会把'1,'后面的“,”号给去掉了

所以得到的结果是1;所以我们就明白了在IE浏览器中!+[1,] 得到NaN, !NaN 为true;就是利用了IE浏览器中处理数组的toString()方法来完成判断;不得不佩服。

但是接下来的研究中发现其实这个bug在IE9的时候已经被解决了,请看这里所以IE8及以下版本用此判断没问题的;但是我们也有别的办法判断即:

1 if(window.VBArray) {
2    console.info("IE浏览器");  
3 } else {
4     console.info("非IE浏览器");  
5 }

 

posted @ 2016-07-31 23:15  leung_blog  阅读(255)  评论(0编辑  收藏  举报