1
我的一位同事在mongo mapreduce中创建了一个愚蠢的bug,他应该创建了一个对象,但实际上已经传递了字符串"{}"
。奇怪的事情是剧本没有崩溃,但实际上遍历字符串,所以我做了一些调查,发现如下:javascript for loop
x="bla"; for (i in x) { alert(i); };
不同的浏览器的工作方式如下脚本:
- IE( 8): - (无提示)
- 铬:0 1 2
- 火狐(较旧的一个):0 1 2 vBlength
- 火狐5:0 1 2
- 的MongoDB:0 1 2修剪LTRIM RTRIM
我非常清楚地知道这不是一个有效的语法,只是纯粹的好奇心,没有任何人知道为什么浏览器的行为,他们做的方式?我对MongoDB的行为特别感兴趣。
所以基本上我看到额外的值,因为这些属性不隐藏? –
@yi_H - 很多。您会看到for ... in循环和不同浏览器中字符串对象的实现细节的差异。 –
请参阅Douglas Crockford关于[for statement](http://javascript.crockford.com/code.html#for%20statement)的建议以避免不好的意外。 – Simon