逻辑运算符&&在类型脚本

时间:2017-11-20 15:27:11

标签: typescript

我想比较下一个输出,以获得我想要的结果。这是我的代码:

  if (this.bmi < 18.5 )
  {
    this.hasil="Berat badan kurang";
  } 
  else if (this.bmi >= 18.5 && this.bmi <=24)
  { 
    this.hasil = "Normal";
  } 
  else if (this.bmi >= 25 && this.bmi <=29 )
  {
    this.hasil = "Berat badan lebih";
  }
  else
  {
    this.hasil = "obesitas";
  }
  console.log(this.hasil);
  console.log(this.bmi);    


})`

this.bmi是一个数字,this.hasilstring&&运算符无法识别的代码上,它只是在包含一个条件的ifelse之间得出结果

1 个答案:

答案 0 :(得分:1)

我已经创建了一个代码的工作示例,并且&&已被识别。但是,我可以在您的代码中看到错误。

2425之间的编号存在逻辑差距(例如24.1,24.2等)。

示例类

以下是我用以下代码包装代码的示例类:

class Example {
    constructor(private bmi: number, private hasil: string) {}


    go() {
        console.log(this.hasil);

        if (this.bmi < 18.5) {
            this.hasil = "Berat badan kurang";
        }
        else if (this.bmi >= 18.5 && this.bmi <= 24) {
            this.hasil = "Normal";
        }
        else if (this.bmi >= 25 && this.bmi <= 29) {
            this.hasil = "Berat badan lebih";
        }
        else {
            this.hasil = "obesitas";
        }
        console.log(this.hasil, this.bmi);
    }
}

测试

以下是一些旨在解决所有问题的测试用例:

new Example(18.4, 'Test 1').go();
new Example(18.5, 'Test 2').go();
new Example(18.6, 'Test 3').go();
new Example(24, 'Test 4').go();
new Example(24.1, 'Test 5').go(); // <--
new Example(24.9, 'Test 6').go(); // <--
new Example(25, 'Test 7').go();
new Example(29, 'Test 8').go();
new Example(29.1, 'Test 9').go();

测试5和测试6一直到obesitas,这可能解释了您对代码的问题。基本上,第二个区块最多可达this.bmi <= 24,但下一个区块从this.bmi >= 25开始,导致范围内的差距。

测试输出:

Test 1
Berat badan kurang 18.4

Test 2
Normal 18.5

Test 3
Normal 18.6

Test 4
Normal 24

Test 5
obesitas 24.1

Test 6
obesitas 24.9

Test 7
Berat badan lebih 25

Test 8
Berat badan lebih 29

Test 9
obesitas 29.1

隐含范围

使用像这样的if语句时要考虑的一件事是,如果你超过了之前的条件,你实际上知道是否是假的,所以你可以用你可以更好的方式表达事物&# 39; t错过了一个范围:

class Example {
    constructor(private bmi: number, private hasil: string) {}


    go() {
        console.log(this.hasil);

        if (this.bmi < 18.5) {
            this.hasil = "Berat badan kurang";
        }
        else if (this.bmi <= 24) {
            this.hasil = "Normal";
        }
        else if (this.bmi <= 29) {
            this.hasil = "Berat badan lebih";
        }
        else {
            this.hasil = "obesitas";
        }
        console.log(this.hasil, this.bmi);
    }
}