var ie=!-[1,];前端
这句话对于多数前端来讲都很熟悉,遇到断定是不是ie浏览器就用这个,可是对于由来以及为何可能没有深刻了解过。数组
短短6个bytes就作了断定。这个表达式是利用IE和标准浏览器对数组处理的差别性来实现的。可是IE通过这么多版本的更新这个断定如今并不可以断定全部的IE版本(IE9及其以上版本浏览器符合标准浏览器规范,即IE8及其如下版本浏览器是非标准浏览器)。直观的看代码:浏览器
ie8及其如下非标准浏览器:object
>>> [1,]co
[object Array][1, undefined]版本
>>> -[1,]ie8
NaNundefined
>>> !-[1,]
true
标准浏览器:
>>> [1,]
[1]
>>> -[1,]
-1
>>> !-[1,]
false
综上:之后能够直接用!-[1,]这六个bytes断定IE8及其如下版本的非标准浏览器。