Javascript的字符串里神奇的逗号与数组

先看这行代码: [source lang="javascript"] new Array([],null,undefined,null) == ",,,"; // true [/source] 挺神奇,哈? 这里有两件事情,首先当然是“==”这家伙引起了类型转换。 转换的规则是当两个对象a和b作比较时,如果一方是简单类型(假设是b吧),另一方是对象(假设是a);则把a类型转换成b的类型。前面的代码b(",,,")是字符串,简单类型,所以要求a(typeof Array是对象对吧)作类型转换到字符串。 另一件事情就是Array的类型转换,转换成字符串时,数组大概就是这样做的:首先把每一个元素转换成字符串,然后调用数组的join方法。既是本上a对象经历了这样的转变: 1. Array([],null,undefined,null) 2. Array("","","","") 3. Array("","","","").join() 4. ",,," 最后变成了",,,",自然就返回true了。 同样的道理下面这行代码就不难理解了。 [source lang="javascript"] ",,," == new…

Continue Reading

Javascript的最大值(max)比最小值(min)小

Javascript有很多很好的特性,Douglas Crockford的JavaScript: The Good Parts是Javascript之美的最好的书籍。同时Javascript由于设计仓促,也有很多从语言角度来说非常傻b的现象。 网站WTFJS收集各种有趣的Javascript错误,供程序员茶余饭后谈资,未尝不是另一种美。 下面这段代码展示了Javascript对最大最小值的处理,导致了最大值比最小值小的现象。 [source lang="javascript"] Math.max(); // -Infinity Math.min(); // Infinity [/source] 看上去不错,只要你真拿他们来跟其他数值进行比较。但是用作不比较,还真不知道最大最小值有什么用途? [source lang="javascript"] console.log(9 < Math.max()); //false console.log(9 < Math.min()); //true Math.min() < Math.max();…

Continue Reading

End of content

No more pages to load