摘要:
有人曾经利用了数组的一个IE的特性创造出了所谓全世界最短的IE判断,即数组最后多加了一个逗号,关于这个特性请看snandy童鞋的文章《定义对象或数组直接量时不同引擎对多余逗号的处理》,这个特性其实以前也研究过,但没有将它和这个IE判断联系起来,现在简单分析一下。var isIE = !-[1,];alert(isIE);其实isIE的赋值可以写成:var isIE = !(-(Number([1,].toString())));在IE下[1,]包含有两个元素,一个是1,一个是undefined,而在其他浏览器里这个数组只有一个1,因此:IE下[1,].toString()等于'1, 阅读全文
摘要:
之前在射雕的博客上看过一道题,其中有段代码如下:if (![] == []) { //Code}![] == [],true or false?我们都知道,ECMAScript中有两种类型的相等操作符:全等与不全等——直接比较而不转换类型相等与不相等——先转换类型再比较全等与不全等的逻辑比较简单,而今天我们要关注的是我们平时用得比较多的第二种操作符:相等与不相等。当我们对两个操作数用 == 进行比较的时候,我们分两种情况:== 两边操作数的类型相同与不相同。我们都知道类型不相同时需要先转换类型,但是其中的转换规则是什么样的呢?也许许多人都不曾仔细研究过,今天我们就通过分析![] == []来深 阅读全文