0

有很多这样的问题,但是......呃......我无法让它工作。我如何...采用这样的对象文字:

locations = {};

locations.activities = [
{ text:'biking'},
{ text:'hiking'},
{ text:'boating'},
{ text:'studying'},
{ text:'reading'},
];

并打印出活动数组值?

IE 和 Firefox 的长度不同(分别为 6 和 5)。

谢谢

4

3 回答 3

4

问题是尾随逗号:出于跨浏览器兼容性的原因将其删除。

不一致的行为是由于某些浏览器在出现尾随逗号时错误地解析文字1引起的。正确的行为是忽略尾随逗号2

如果一个元素在数组末尾被省略(即 [...,]),则该元素不会影响数组的长度。


1语法在 IE10中正常工作,但在 IE9 及之前的版本中不正确。这可以通过[1,].length在相关浏览器模式下从控制台进行测试来验证。报告的值分别为 1(正确)和 2(错误)。

2尾随的逗号是相关的,在[,]它应该等价于的情况下[undefined]

于 2013-08-30T21:52:18.727 回答
1

利用JSON.stringify(locations.activities);

于 2013-08-30T21:51:20.033 回答
1

尝试这个

locations = {};
locations.activities = [
{ text:'biking'},
{ text:'hiking'},
{ text:'boating'},
{ text:'studying'},
{ text:'reading'},
];


 $.each(locations.activities, function(){
  alert(this.text);
 }); 

js小提琴在这里http://jsfiddle.net/mhnHx/

于 2013-08-30T21:57:47.270 回答