Javascript 节点/mongo/函数/作用域的奇怪行为
我有这条express.js路线Javascript 节点/mongo/函数/作用域的奇怪行为,javascript,node.js,mongodb,express,Javascript,Node.js,Mongodb,Express,我有这条express.js路线 app.get("/explore/:category?", checkCategory, function(req, res){ var params = new Array(); params["path"] = req.route.path; Category.findOne({hash:category}, function (err, doc) { params["category"] = doc
app.get("/explore/:category?", checkCategory, function(req, res){
var params = new Array();
params["path"] = req.route.path;
Category.findOne({hash:category}, function (err, doc) {
params["category"] = doc;
});
console.log(params);
当您在findOne中时,doc值和params[“category”]值就可以了。但是,在该范围之外,它将消失,params[“category”]将变为“undefined”。现在,在刷新页面一次后,它将恢复正常行为,并且在节点的其余运行过程中似乎一直保持这种状态
为什么会发生这种行为?之所以会发生这种情况,是因为在传递给findOne的回调之前调用了console.log。如果您这样更改它,它将按预期工作:
Category.findOne({hash:category}, function (err, doc) {
params["category"] = doc;
console.log(params);
});
另外,请参见类似问题的答案,如