简单分析全世界最短的IE判断

有人曾经利用了数组的一个IE的特性创造出了所谓全世界最短的IE判断,即数组最后多加了一个逗号,关于这个特性请看 snandy童鞋的文章《 定义对象或数组直接量时不同引擎对多余逗号的处理》,这个特性其实以前也研究过,但没有将它和这个IE判断联系起来,现在简单分析一下。
var isIE = !-[1,];
alert(isIE);
其实isIE的赋值可以写成:
var isIE = !(-(Number([1,].toString())));
在IE下[1,]包含有两个元素,一个是1,一个是undefined,而在其他浏览器里这个数组只有一个1,因此:
IE下[1,].toString()等于'1,',在其他浏览器里则是'1',而原式!-[1,]中负号'-'则是用来调用Number()方法,Number(1,)等于NaN,Number(1)等于1,由此可得在IE下isIE为true,而在其他浏览器中为false。因此可以用isIE = !-[1,]来判断浏览器是否为IE6,7,8(IE9已经修改数组这个特性了)。

转载于:https://www.cnblogs.com/akakingback/archive/2011/02/27/1966295.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值