js判别过滤出ie8、ie7
最近看到一种if语句if(!+"\v1")
不知其用意,于是调式了一番,原来ie8与ie8以下浏览器中(!+“\v1”)返回true,其他主流浏览器跟ie9+则返回false。
为什么会这样?
先把语句拆分出来分析
1:“\v1”;
\v在正则表达式中表示”竖向制表符“
console.log("\v1");在ie8与ie8以下浏览器中返回v1,在其他浏览器中返回1,这就是为什么两者会返回不同的布尔值的根本原因。(但为什么会返回v1和1我就不太清楚了,但我觉得是ie8以及一下的版本不能识别“\”,而其他浏览器就会将它作为制表符处理)。
2 : +;
一元加法操作符,它会将它后面的字符或者对象转型(如果是数值的话就保持不变),其实跟Number对字符的转型是一样的。
+“1” 输出1
+“v1” 输出NaN
3 : !
最后一个就最容易了,它会将一个字符转成布尔值,毋庸置疑,!1返回false,!NaN 返回true.
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。