var ie=!-[1,];

这句话对于多数前端来说都很熟悉,遇到判定是否是ie浏览器就用这个,但是对于由来以及为什么可能没有深入了解过。

短短6个bytes就做了判定。这个表达式是利用IE和标准浏览器对数组处理的差异性来实现的。但是IE经过这么多版本的更新这个判定现在并不能够判定所有的IE版本(IE9及其以上版本浏览器符合标准浏览器规范,即IE8及其以下版本浏览器是非标准浏览器)。直观的看代码:

ie8及其以下非标准浏览器:

>>> [1,]

[object Array][1, undefined]

>>> -[1,]

NaN

>>> !-[1,]

true

标准浏览器:

>>> [1,]

[1]

>>> -[1,]

-1

>>> !-[1,]

false

综上:以后可以直接用!-[1,]这六个bytes判定IE8及其以下版本的非标准浏览器。

posted on 2014-06-12 16:16  易成波  阅读(311)  评论(0编辑  收藏  举报