JSON
在JSON格式中,逗号是多个属性键值对间的分隔符,例如:
var json = { id: 1, name: 'heero' };
但在编程的时候,很容易会画蛇添足,在最后一对键值对后也加上了逗号:
var json = { id: 1, name: 'heero', };
在这种情况下,IE6、7会报错,但IE8以及其他浏览器则没有问题。
数组
在数组中,逗号是元素间的分隔符,例如:
var arr = [1, 2, 3];
同样地,我们也有可能不小心在最后一个元素后加了逗号:
var arr = [1, 2, 3,];
凭直觉来说,这应该是错误的语法。但实际上,所有浏览器都对这种情况实现了兼容,包括IE6。考虑这样一段示例代码:
var arr = [1, 2, 3,];
for (var i = 0; i < arr.length; i++) { alert(arr[i]); }
在IE以外的浏览器上,均依次输出1、2、3;但在IE浏览器上,却是依次输出1、2、3、undefined。明显地,IE在那个多余的逗号后加了一个undefined元素。
再考虑另一种情况,多余的逗号不在末尾,而是在中间:
var arr = [1, 2,, 3,];
for (var i = 0; i < arr.length; i++) { alert(arr[i]); }
所有浏览器均输出1、2、undefined、3,可见处理方式是一样的,就是在多余的逗号前插入一个undefined元素。