Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将函数从if-else转换为switch语句时出错_Javascript - Fatal编程技术网

Javascript 将函数从if-else转换为switch语句时出错

Javascript 将函数从if-else转换为switch语句时出错,javascript,Javascript,我正在为聊天机器人创建句子,我需要用一个开关替换IF,我尝试了一些方法,但我不熟悉JavaScript function chatbotResponse() { talking = true; botMessage = "Desculpe não entendi"; //the default message if (lastUserMessage === 'hi' || lastUserMessage =='hello') { const hi = [

我正在为聊天机器人创建句子,我需要用一个开关替换IF,我尝试了一些方法,但我不熟悉JavaScript

function chatbotResponse() {
  talking = true;
  botMessage = "Desculpe não entendi"; //the default message

  if (lastUserMessage === 'hi' || lastUserMessage =='hello') {
    const hi = ['hi','howdy','hello']
    botMessage = hi[Math.floor(Math.random()*(hi.length))];;
  }

  if (lastUserMessage === 'name') {
    botMessage = 'My name is ' + botName;
  }
}
我试过如下方法:

switch(lastUserMessage) {
  case lastUserMessage === 'hi':
    botMessage = 'My name is ' + botName;
    break;
  case lastUserMessage === 'hi'
   botMessage = 'My name is ' + botName;
    break;
}

情况下,您无法检查是否相等,这就是为什么您使用
switch
语句,以便它自动进行检查的原因。因此,您只需要使用
lastUserMessage
将得到检查的值。您还可以添加
默认值
案例。如果不匹配,则执行默认代码块

const lastUserMessage=“hi”;
const botName=“Alexa”;
让我们分享信息;
开关(lastUserMessage){
案例“hi”:
botMessage=“嗨,我的名字是”+botName;
打破
案例“你好”:
botMessage=“你好,我的名字是”+botName;
打破
}
console.log(botMessage)你读过这本书了吗

您不需要使用
==
操作符,开关盒已经为您完成了

switch (lastUserMessage) {
  case 'hello':
    botMessage = 'Hello, my name is ' + botName;
    break;
  case 'name':
    botMessage = 'My name is ' + botName;
    break;
  default:
    botMessage = 'default message'
}

这里,
开关
开始比较第一个案例变量的
lastUserMessage
,即
hi
。这是一个匹配,因此执行从case
hi
开始,直到最近的中断

如果没有中断,则继续执行下一个案例,而不进行任何检查

const lastUserMessage=“hi”;
const botName=“Alexa”;
让我们分享信息;
开关(lastUserMessage){
案例“嗨”:
案例“你好”:
botMessage='你好,我的名字是'+botName;
打破
案例“名称”:
botMessage='我的名字是'+botName;
打破
}

console.log(botMessage)这不是实现switch case语句的正确语法。您可以通过以下方式更正语法:

switch (lastUserMessage) {
  case "hi":
    botMessage = "My name is " + botName;
    break;
}
您可以参考官方MDN文档了解有关switch case语句的更多信息: