【问题标题】:NodeJS: how to create a flagNodeJS:如何创建标志
【发布时间】:2017-12-12 01:46:51
【问题描述】:

我正在努力如何在 nodejs 中创建一个标志。请参考下面的小代码来了解我的想法

var isLogged = "no"

function login(){
    this.isLogged = "yes"
}

function sendText(){
    if(this.isLogged == "yes"){
      console.log("Hello World")
    }
}

在 nodeJS 中,变量似乎不支持这一点。请教我怎么做。谢谢

【问题讨论】:

  • 您有实际问题吗?您是否看到某种错误?它以前如何?有什么事情没有按您的预期工作吗?发生了什么,您预计会发生什么?
  • 创建父对象
  • 这里的this 指的是什么? (这取决于如何调用这些函数。)也许var isLogged = "no" 在构造函数中应该是this.isLogged = "no",或者this.isLogged 应该只是isLogged 在其他地方。这里确实没有足够的信息来帮助您。
  • 您需要在会话中为此类标志保留数据。如果您使用 express,请使用由 redis 或 mongodb 支持的 express-session 来存储会话数据。
  • 对不起,如果我让你们感到困惑,我对node js 还很陌生,所以有时我真的不知道这个问题,只是试着解释一下我的想法。

标签: javascript node.js variables scope


【解决方案1】:

节点中没有 windows 对象使用变量索引。像这样。

var isLogged = 'no'

function login() {
  isLogged = "yes"
}

function sendText() {
  if (isLogged == "yes") {
    console.log("Hello World")
  }
}

console.log(isLogged);
login()
sendText();
console.log(isLogged);

【讨论】:

  • 嗨箭头,没有“this”,变量不会更新。总是“不”
  • @PeterPham 那么您给出的示例不满足minimal reproducible example 的“完整”要求。
【解决方案2】:

也许您应该尝试简单一点,忘记this 范围。只需重新分配。

var isLogged = "no";

function login(){
    isLogged = "yes";
}

function sendText(){
    if(isLogged == "yes"){
      console.log("Hello World");
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    • 2021-07-24
    • 1970-01-01
    • 2013-05-01
    • 2021-08-14
    • 2022-01-26
    • 1970-01-01
    相关资源
    最近更新 更多