本文介绍了JavaScript中判断IE浏览器的极简代码实现。从最初的32字节逐步优化至7字节,最终由俄罗斯开发者突破至6字节。核心原理利用IE与非IE浏览器对数组末尾逗号处理的差异,通过!-[1,]实现判断。同时提供了反向判断非IE的更短写法,适用于前端兼容层开发。
IE浏览器判断的最短代码演进
var ie = !+"\v1";
该实现仅需7字节。参考文章《32 bytes, ehr ... 9, ehr ... 7!!! to know if your browser is IE》,记录了如何将IE判定逻辑从32字节逐步压缩至7字节的优化过程。
然而,今年1月8日这一纪录被一位俄罗斯开发者打破,将代码缩短至6字节。此技巧利用了IE浏览器与标准浏览器在数组toString方法处理上的差异。在标准浏览器中,若数组末尾包含逗号,JS引擎会自动忽略该逗号。详见相关讨论。恭喜Aleko,这一优化令人印象深刻。
var ie = !-[1,];
[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]
若从非IE浏览器的角度进行判定,可进一步节省一个字节。因为在大多数兼容场景下,主要区分的是IE与非IE环境。
var notIE = -[1,];
[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]