快速错误的方式检查IE或不?

Roy*_*mir 7 javascript cross-browser

在JavaScript中阅读了一篇关于Test for Internet Explorer的文章,其中指出快速测试是:

var isMSIE = /*@cc_on!@*/0;

if (isMSIE) {
  // do IE-specific things
} else {
  // do non IE-specific things
}
Run Code Online (Sandbox Code Playgroud)

但其中一条评论显示了另一种方式:(我必须说,它有效)

if (-[1,]) {
// do non IE-specific things
} else {
// do IE-specific things
}
Run Code Online (Sandbox Code Playgroud)

所以我问:

有什么特别之处-[1,],IE浏览器不识别它而其他人呢?

PS

发现了另一个快速的虚假伎俩

IE='\v'=='v'
Run Code Online (Sandbox Code Playgroud)

Ale*_* K. 5

[1,].toString()在最新版本之前的IE浏览器中1,,当以算术为前缀时-会输出falsey NaN而其他浏览器会返回[1,].toString() === 1truthy -1.

它是一种可怕的嗅探技术,完全避免它,并且正如其他人评论的那样检测对特定功能的支持.