有很多这样的问题,但是......呃......我无法让它工作。我如何...采用这样的对象文字:
locations = {};
locations.activities = [
{ text:'biking'},
{ text:'hiking'},
{ text:'boating'},
{ text:'studying'},
{ text:'reading'},
];
并打印出活动数组值?
IE 和 Firefox 的长度不同(分别为 6 和 5)。
谢谢
有很多这样的问题,但是......呃......我无法让它工作。我如何...采用这样的对象文字:
locations = {};
locations.activities = [
{ text:'biking'},
{ text:'hiking'},
{ text:'boating'},
{ text:'studying'},
{ text:'reading'},
];
并打印出活动数组值?
IE 和 Firefox 的长度不同(分别为 6 和 5)。
谢谢
问题是尾随逗号:出于跨浏览器兼容性的原因将其删除。
不一致的行为是由于某些浏览器在出现尾随逗号时错误地解析文字1引起的。正确的行为是忽略尾随逗号2:
如果一个元素在数组末尾被省略(即 [...,]),则该元素不会影响数组的长度。
1语法在 IE10中正常工作,但在 IE9 及之前的版本中不正确。这可以通过[1,].length
在相关浏览器模式下从控制台进行测试来验证。报告的值分别为 1(正确)和 2(错误)。
2尾随的逗号是相关的,在[,]
它应该等价于的情况下[undefined]
。
利用JSON.stringify(locations.activities);
尝试这个
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/