我工作在JS小不和谐机器人,所有我需要做的是,当称某指令时,将递增编号(0 -> 1
),那么它会记住它递增该数这样,下次说该命令时,它将再次增加(1 -> 2
)。抱歉,我是JS的新手,但是我正在一点一点地弄清楚。
由于我的知识有限,我尝试过的只是声明“ num”,然后再加一个。然后我尝试将num声明为0,一旦说出命令(在占位符的情况下为“ song”),它就会增加到一,然后再次说出命令,它将重置为0
,然后增加到1
。
if(command === "song") {
var num = 0
num = num + 1;
return message.channel.send(num);
}
我希望它在每次说e.x命令时保持递增(我说“ song”,机器人说1,再说一次“ song”,bot说2,等等)
答案 0 :(得分:2)
您应该移动num
变量初始化远离if
体和地点出来包含该函数的if
,如由代码疯狂答案。
编辑
合并原来的示例代码和代码疯子提供的代码示例,你可以尝试这样的事:
function init() {
var num = 0;
return function(command) {
console.log(command);
if(command === "song") {
num = num + 1;
//return message.channel.send(num);
console.log(num);
}
}
}
var commandHandler = init();
commandHandler('song');
commandHandler('song');
commandHandler('no-song');
commandHandler('song');
commandHandler('no-song');
commandHandler('song');
答案 1 :(得分:0)
简单。首先,在JavaScript文件的顶部声明num
,以便全局访问:
var num = 0;
然后在你的if
声明中,只需要使用num++
if (command === "song") {
num++;
return message.channel.send(num);
}
(以上语法是increment operator,特别是后递增操作符)。
这是一个简化的演示:
var num = 0;
function test(command) {
if (command === "song") {
num++;
}
return num;
}
console.log(test("song"));
console.log(test("not a song"));
console.log(test("song"));
答案 2 :(得分:0)
您需要保持num
在外部范围,以避免每次都重设
您可以考虑以下示例进行理解
let num = 0
function command(input){
if( input === "song") {
num++;
}
return num
}
console.log(command('song'))
console.log(command('blah'))
console.log(command('song'))