if (else) 语句中的布尔逻辑有问题

问题描述 投票:0回答:1

我正在尝试创建一个函数,根据两个变量返回不同的问候语:提供的国家/地区和时间。
如果 time 大于或等于 0 但小于 12,则为早上。如果时间大于或等于 12 但小于 24,则为晚上(因此早上为假)。
如果国家是西班牙或墨西哥,并且“morning”为真,则应打印“buenos dias”,如果国家为西班牙或墨西哥,但“morning”为假(晚上),则应打印“buenos noches”。
当国家/地区是法国时也是如此。
目前西班牙是唯一可以正常工作的国家。

不起作用的示例:

  • 墨西哥之夜版画“buenos dias”
  • 法国之夜打印为空。


function sayHello(country, time) {
  let greeting;
  let morning; 
  if(time>=0 && time<12){
      morning= true; 
  }else if(time>=12 && time <24){
      morning = false; 
  } else {
      morning = null; 
  };

  if(morning && country === 'Spain'|| country==='Mexico'){
    greeting = 'buenos dias';
  } else if (!morning && country === 'Mexico'|| country==='Spain'){
    greeting = 'buenos noches';
  } else if(morning && country==='France'){
    greeting = 'bon matin';
  } else if(!morning && country==='France'){
    greeting = 'bon soir';
  } else{
    greeting = null; 
  }

  // Don't change code below this line
  return greeting;
}

console.log(sayHello('Mexico', 15));
javascript if-statement boolean-logic boolean-expression
1个回答
0
投票

您需要在布尔语句中使用 ( ),如下所示:

  if(morning && country === 'Spain'|| country==='Mexico'){

将其变成

  if(morning && (country === 'Spain'|| country==='Mexico')){

逻辑将会改变。

你不能只写一长行布尔表达式,你需要表达“IF Morning == true AND (country == 'Spain' OR Country == 'Mexico')”

然后将其应用于其他 if 和 else if 语句,直到完成。

© www.soinside.com 2019 - 2024. All rights reserved.