最短的经过特性检测判断浏览器

注意:咱们这里通常是讨论IE和非IE浏览器,更精准的检测须要结合UA和其余特性检测来综合判断javascript

1. 垂直制表符html

'\v'的转义问题,利用浏览器对转义字符'\v'的理解java

IE浏览器不能识别\v为一种转义字符,会直接输出vchrome

其余浏览器(目前验证safari\chrome)会转义为垂直制表符,大约等同于""一个空格express

// ie会生成为v1,right-expression遇到+会转化为字符串拼接,但left-expression为空,会转为数字加法, 能够了解下+[]为何等于0
// 因此ie +"v1"等到的结果就是NaN
var ie = !+"\v1"; //false, ie

2: 利用浏览器的JS引擎解析不一样浏览器

咱们在写一个类Json结构的object的js对象时,如ide

{
  name: "test",
  key: "key",
  value: false,
}

这段代码在IE的引擎下会报错为: 不指望的结束符,缘由在于value结束后 ','号浏览器解析错误,因此这个方法是充分利用浏览器的纠错功能来作的判断ui

那么[1,]在IE调用toString方法将会解析"1," 在标准浏览器中会剔除',',注意区分ArrayList中[,3,,4,]missing的是哪些索引,能够看MDN的解释spa

if (!+[1,]) {
  // ie  
} else {
  // 标准浏览器
}
// 操做符+当左表达式不存在时会试图把右表达式转化为number
// +[]
// +[]的转化过程能够这样来解释
// Number([])
// Number([].toString())  // [].valueOf() isn’t primitive
// Number("")
// 0

扩展: +[]能够查看code

相关文章
相关标签/搜索