考虑以下“推送”方案。
(global) var refs = [] ;
var record = {id:1, references: ["12","145"]};
refs.push(record);
然而,当我使用Chrome进行调试时,跳过了push函数,最后refs数组为空。是什么原因?
编辑:
完整的代码是这样的:
gadgets.sciverse.makeRequest(entry['prism:url'], function(obj) {
var testJson = $.xml2json(obj['text']);
// console.log(testJson);
var tempArr = [];
if (!testJson) {
console.log('empty secondary response');
return ;
}
var refSet = testJson ['item']['bibrecord']['tail']['bibliography']['reference'];
if (!refSet)
tempArr = [] ;
else {
$.each(refSet, function(i, e){
tempArr.push(e['ref_info']['refd_itemidlist']['itemid']['text']);
})
}
var verySillyTemp = {
id: pid,
arr: tempArr
} ;
refs.push( verySillyTemp );
},params);
console.log(refs);
答案 0 :(得分:2)
看起来在异步调用中设置了refs
,并且在设置它之前记录它。
答案 1 :(得分:1)
考虑在性能关键循环和函数中使用替代原语操作而不是函数调用。
您可以使用以下方法。
record[record.length] = id;
这只是一个虚拟示例,您可以通过记录数组运行for
循环。
原始操作可以比函数调用更快。
答案 2 :(得分:0)
语法错误:
var record = {id:1, references: ["12","145"]};