我声明一个全局变量nrOfFoundIncidents,每次发现"事件"时,它都会在函数内迭代。然而,在函数执行之后,变量再次为空,即使它是在函数外部声明的。
这是为什么?我能做些什么?
var INCIDENT_MATCHES = {
trafficAccidents: /(traffic|car) accident|/
robberies: /...
...you get it.
};
// theIncidents[0] = "There was a robbery on the 52th street last nigth...";
// theIncidents[1] = "Two days ago a car crashed into a house...";
// theIncidents[2] = "One person got stabbed outside his home...";
... and so on...
var nrOfFoundIncidents = 0;
function FindIncidents(incidentReports) {
var incidentCounts = {};
var incidentTypes = Object.keys(INCIDENT_MATCHES);
incidentReports.forEach(function(incident) {
incidentTypes.forEach(function(type) {
if(typeof incidentCounts[type] === 'undefined') {
incidentCounts[type] = 0;
}
var matchFound = incident.match(INCIDENT_MATCHES[type]);
if(matchFound){
var matchFound = incident.match(INCIDENT_MATCHES[type]);
nrOfFoundIncidents += 1;
console.log(nrOfFoundIncidents); // 1, 2, 3, 4, 5, 6, 7...
}
});
});
return incidentCounts; // <- returns as it supposed
}
var objectOfIncidents = FindIncidents(theIncidents); <-- as an argument an object containing of categories with reg exp to find them in the text that is searched is provied.
console.log(nrOfFoundIncidents); // <--- 0
EDIT:我用剩下的代码更新了函数,因为有遗漏相关信息的风险。
您的代码实际上完全按照您的期望工作。
http://jsfiddle.net/vxbRV/日志:
found a match 1
found a match 2
found a match 3
after code runs: 3
这证明变量正在按您期望的方式递增。
无论你有什么问题,都不是这个发布代码的直接部分。