if(!+"v1"){
IE代码
}else{
其他浏览器代码
}
if("v"=="v"){//true为IE浏览器, document.getElementById("a").attachEvent("onporpertychange",function(e){ console.log("inputting!!"); } }else{ document.getElementById("a").addEventListener("onporpertychange",function(e){ console.log("inputting!!"); }
if(!+"v1"){IE代码}else{其他浏览器代码},
IE8及以下浏览器中测试是true,在firefox/chrome/opera中测试是false.。
其实就是利用各浏览器对转义字符"v"的理解
在ie浏览器中,"v"没有转义,得到的结果为"v"
而在其他浏览器中"v"表示一个垂直制表符(一定程度上相当于空格)
所以ie解析的"v1" 为 "v1"
而其他浏览器解析到 "v1" 为 "1"
在前面加上一个"+"是为了把后面的字符串转变成数字
由于ie认为"v1"为"v1",所以前面的加上加号无法转变成数字,为NaN
其他浏览器均能变成 1
再因为js与c语言类似,进行逻辑判断时可使用数字,并且 0 为 false,其他数字则为true
所以 !1 = false ,于是其他浏览器均返回false
js在遇到如下几个值会返回false:undefined、null、NaN,所以ie中 !NaN = true
同样 if("v"=="v")也是同样的原理。