不使用会话

时间:2017-11-25 17:47:30

标签: javascript node.js variables scope

如何在不使用会话和传递变量的情况下为每个用户声明独立原始变量?

我在PHP中没有这个问题,因为变量对每个用户来说都是原创的,你可以在函数之间共享它们。

<?php
$original_variable_for_each_user = "foo";
function foo() {
   //it can reach variable
   console.log(original_variable_for_each_user);
}
?>

但是,如果我想在函数之间共享变量,我无法在Node.js中执行此操作。

情况1

var not_original_variable_for_each_user = "foo";

app.get('/', function(req, res) {
  not_original_variable_for_each_user = "foo";
  res.sendFile(__dirname + '/index.html');
});

function foo() {
  //it can reach variable
  console.log(not_original_variable_for_each_user);
}

情况2

app.get('/', function(req, res) {
  var original_variable_for_each_user = "foo"
  res.sendFile(__dirname + '/index.html');
});

function foo() {
  //it can not reach original_variable_for_each_user
  console.log(original_variable_for_each_user);
}

我将非常感谢您的回答。

1 个答案:

答案 0 :(得分:0)

不是依赖于状态的全局变量,而是将状态作为函数参数传递。

你的第二个例子可以改写如下:

app.get('/', function(req, res) {
    var userState = {
        myVar: "foo",
    };
    foo(userState); // here the state is explicitly being passed into the function
    res.sendFile(__dirname + '/index.html');
});

function foo(userState) {
    console.log(userState.myVar);
}