【问题标题】:Replacing a variable with another用另一个变量替换一个变量
【发布时间】:2020-01-26 10:32:47
【问题描述】:

所以我稍微修改了我的代码,但我仍然无法弄清楚。

用户输入:!change Hi

var A = "Hello"

if (msg.content.includes ('!change')) {
  A = msg.content.replace('!change ', '');
}
msg.send(A); //the change won't stick outside the if statement

输出:你好

我做了一些阅读并尝试使用一个函数,但我无法让它工作。

var A = "Hello"

if (msg.content.includes ('!change')) {
  B = msg.content.replace('!change ', '');

  changetext(B)
}


function changetext(altText){
A=altText
}

msg.send(A); //the change won't stick here either

对不起,如果我没有说得太清楚,我正在尽力而为。我的目标是让用户可以输入“!change Hi”,然后更改将保留在 if 语句和 A="Hi" 之外。希望这是有道理的。任何建议将不胜感激。

【问题讨论】:

  • 您的if 语句是否在您的真实代码中的函数内?如果是这样,var A = C 前面的 var 正在声明一个新的独立的 A 变量。如果要修改顶级A,则从var A = C 中删除var,因此它只是A = C。仅供参考,您的三行代码可以替换为A = msg.content.replace('!change ', '');。你不需要BC
  • 我更新了我的代码并试图澄清我正在尝试做什么,我确实使用了更改并消除了 B 和 C,只是直接使用了 A。不过我还是有点迷茫
  • 我不知道该说什么。您的代码在这里工作得很好:jsfiddle.net/jfriend00/fub72ac6。也许msg.content 不是你想的那样?
  • @Cody 您是否尝试过使用调试器或手动单步执行您的代码?看起来上面发布的 jsfiddle 应该可以工作。当您在changeText 中调用msg.send(A) 时会发生什么?

标签: javascript node.js


【解决方案1】:

如果我理解正确,您希望您的 var A 成为 var C 的内容。

if 块之外,您不会在msg.send(A) 中获得预期输出,但在if 块内却获得预期输出的原因是因为您在其中定义了一个全新的变量A if 块,因此对msg.send 的最后一次调用将始终返回“Hello”。

尝试删除 var 并仅使用 A = C,这应该会为您提供正确的输出

例如

 var A = "Hello"
 if (msg.content.includes('!change')) {
   var B = msg.content;
   var C = B.replace('!change ', '');
   A += C;

   msg.send(A); //Hi Hello
 }

 msg.send(A); //Hi Hello

【讨论】:

  • 这是一个猜测(根据 OP 未显示的代码,它可能是一个正确的猜测)。 OP 的代码实际上并未在与第二个var A 不同的函数范围内显示顶级Avar A 在同一个函数作用域内实际上并没有创建新变量。
  • 他想要 A + C 我想,我删除了我的答案 om 代表你的解释做得好
  • 这是一个很好的观点@jfriend00,它很可能在一个函数中,或者有其他代码覆盖var A@DutchPrime,是的,我现在从 OPs 帖子中看到了代码输出示例
  • @ShermanHui 感谢您的建议,我实际上并不知道我实际上是在制作一个全新的变量。我稍微更改了我的代码,但我仍然无法做我想做的事情,我也试图更好地阐明我的目标。
猜你喜欢
  • 1970-01-01
  • 2022-11-17
  • 1970-01-01
  • 2012-10-16
  • 2019-09-01
  • 2015-10-03
  • 2019-11-01
  • 2018-09-22
  • 1970-01-01
相关资源
最近更新 更多