我在javascrip(nodejs服务器)中遇到“静态”功能问题。
User.create = function(data, _callback){
var node = db.createNode(data);
var _user = new User(node);
_user.save(function(err){
if(err) return callback(err, null);
_user.index(function(err){
if(err) return callback(err, null);
callback(null, _user);
})
})
};
如果我两次调用此函数,内部回调函数中的_user变量将获取新值,它似乎会覆盖函数var而不是分配新函数。
我需要调用这个函数来分配一个新变量,所以它等待save和index函数完成而不改变_user变量。
答案 0 :(得分:0)
JavaScript变量确实是函数范围的,所以var _user
没有任何解释在后续运行中没有定义新变量。
查看代码,我会更加怀疑用户构造函数中发生的事情 - 可能它包含一些范围或其他逻辑问题,导致在后续调用中创建相同的用户。类似的“嫌疑人”将被传入data
参数,以及db.createNode()
。只是建议这些方面,因为它更有可能发生程序性问题,而不是JavaScript不遵守规则:)
此外,我注意到您的User.create
函数接受名为_callback
的参数,但稍后会调用callback
。我不知道你的例子中是否存在拼写错误,或者你是否意外地从示例中未显示的较高范围调用回调,但这可能会产生奇怪的行为。