Javascript Node.js中的代码是否正确?(可变范围)

Javascript Node.js中的代码是否正确?(可变范围),javascript,oop,node.js,Javascript,Oop,Node.js,首先,假设该站点获得大量点击。(每秒数千次!) 当用户使用其ID点击页面时,console.log(uuu)是否会输出正确的ID?我担心的是(关于变量范围)当人员A点击页面并通过processUserObject时,可能需要很长时间,在此期间人员B点击页面并更改uuu…导致console.log输出人员B的ID而不是人员A的ID 旁注:我有这种担心,因为当我刚接触Node.js时,我忘了用var初始化一些变量。当我的站点获得大量点击时,我的用户注意到他们从其他用户的点击中获取信息……哎哟。是的,

首先,假设该站点获得大量点击。(每秒数千次!)

当用户使用其ID点击页面时,
console.log(uuu)
是否会输出正确的ID?我担心的是(关于变量范围)当人员A点击页面并通过
processUserObject
时,可能需要很长时间,在此期间人员B点击页面并更改uuu…导致console.log输出人员B的ID而不是人员A的ID


旁注:我有这种担心,因为当我刚接触Node.js时,我忘了用
var
初始化一些变量。当我的站点获得大量点击时,我的用户注意到他们从其他用户的点击中获取信息……哎哟。

是的,
console.log(uuu)
将记录正确的值。当你这么说的时候:

function user(req,res){
    var uuu = req.params.userid;
    processUserObject(uuu, function(user_object){ //This could take a long time...
        console.log(uuu); 
        res.send(JSON.stringify(user_object));
    });
};
app.get('/:userid',function(req,res){
    user(req,res);
});
您正在捕获局部变量
uuu
req.params.userid
的当前值,然后回调闭包捕获
uuu
。但是,如果您意外地这样做:

var uuu = req.params.userid;
然后您将在全局
uuu
中捕获
req.params.userid
值,并且您的每个回调将共享相同的
uu
,并且您将遇到通常的关闭问题。你们每个人

uuu = req.params.userid;
匿名函数是独立的、不同的实体,具有各自独立的、不同的
uuu
变量(当然,假设您说的是
var uu
,而不是
uu

顺便说一句,如果你以每秒十亿次的请求而告终,那么来自你超负荷工作的CPU的热量将融化这个世界和下一个世界之间的隔阂,从而从莱恩那里释放出年长的神。如果发生这种情况,
uuu
将毫无意义。

是的,
console.log(uuu)
将记录正确的值。当你这么说的时候:

function user(req,res){
    var uuu = req.params.userid;
    processUserObject(uuu, function(user_object){ //This could take a long time...
        console.log(uuu); 
        res.send(JSON.stringify(user_object));
    });
};
app.get('/:userid',function(req,res){
    user(req,res);
});
您正在捕获局部变量
uuu
req.params.userid
的当前值,然后回调闭包捕获
uuu
。但是,如果您意外地这样做:

var uuu = req.params.userid;
然后您将在全局
uuu
中捕获
req.params.userid
值,并且您的每个回调将共享相同的
uu
,并且您将遇到通常的关闭问题。你们每个人

uuu = req.params.userid;
匿名函数是独立的、不同的实体,具有各自独立的、不同的
uuu
变量(当然,假设您说的是
var uu
,而不是
uu


顺便说一句,如果你以每秒十亿次的请求而告终,那么来自你超负荷工作的CPU的热量将融化这个世界和下一个世界之间的隔阂,从而从莱恩那里释放出年长的神。如果发生这种情况,
uuu
就无关紧要了。

每秒十亿次点击听起来不太可能!如果地球上的每个人都能同时访问你网站上的每7秒一个页面,你就会得到它。这只是理论上的…我不是说字面上的意思。他可能会有一百万台服务器在他的网站上查询服务请求。每个人每毫秒都会点击一次服务。为了让你能够正确地衡量你的“理论”,Twitter平均每秒收到600个请求,Facebook大约每秒收到700个。雅虎的平均点击率为每秒3500次,其中最大的一家谷歌的平均点击率为每秒34000次。因此,每秒超过1000个请求意味着你希望你的web应用比Facebook更受欢迎。“我忘了用var初始化一些变量”——这是使用coffeescript的一个很好的理由:每秒点击数达10亿次听起来不太可能!如果地球上的每个人都能同时访问你网站上的每7秒一个页面,你就会得到它。这只是理论上的…我不是说字面上的意思。他可能会有一百万台服务器在他的网站上查询服务请求。每个人每毫秒都会点击一次服务。为了让你能够正确地衡量你的“理论”,Twitter平均每秒收到600个请求,Facebook大约每秒收到700个。雅虎的平均点击率为每秒3500次,其中最大的一家谷歌的平均点击率为每秒34000次。因此,每秒超过1000个请求意味着您希望您的web应用程序比Facebook更受欢迎。“我忘了用var初始化一些变量”——这是使用coffeescript:D的一个很好的理由