“遵循标准和实现自有的特性,这二者之间是存在一个平衡点的。在我看来,user-friendly可以作为这一平衡点的参考标准之一。” Javascript中使用JSON字符串来描述object的时候,name/value pair之间是以逗号来分割的,例如: { name: 'jlazy', city: 'shanghai', zipcode:'200001' } 这个语法与C、C++、Java和C#中定义数组的语法类似,但是有一个很大的区别,就是最后一个name/value pair后面不应该有逗号。而C家族的数组定义中,是允许存在trailing comma的,例如: int dim[] = { 32, 44, 60, }; 在程序中如果需要动态生成这种结构性的字符串,显然后者是较为容易的,for循环中每次在遍历项的最后添加一个‘,’符号即可。而对于JSON字符串,需要添加一个判断条件语句: var strJson = '{'; for (int i = 0; i < array.length; ++i) { if (i) strJson += ','; strJson += array[i]; } 不同的浏览器实现针对这个特点有不同的实现,例如,Firefox中,默许trailing comma的存在,这对程序开发者是较为友好的。而IE7对于这个trailing comma则是非常挑剔的,算得上是有点finicky。不过既然这是标准,IE7选择了严格的语法检查,也是无可厚非的。 刚好遇到了一个bug是由于这个原因导致的,特地还安装了Visual Studio 2008来attach to process来debug dynamic scripts。因此特别记录一下。 References: 1) Introducing JSON [ ^ ] 2) Can you use a trailing comma in a JSON object? 3) Dojo ComboBox Widget (Take 2) 4) Trailing Comma Within JSON's Array