Javascript 为什么空输入值等于true?

Javascript 为什么空输入值等于true?,javascript,angular,if-statement,input,null,Javascript,Angular,If Statement,Input,Null,如果输入等于答案,则假定此代码在输入时执行。 相反,如果我有一个等于0的乘法问题,一旦我删除了前一个乘法问题的答案(保留输入为空),结果将返回true并执行if语句。我怎样才能防止这种情况 ngOnInit() { this.multiply(); } f1 = 0; f2 = 0; answer:number = 0; input:number = 0; multiply():void{ this.f1 = Math.floor(Math.random()

如果输入等于答案,则假定此代码在输入时执行。 相反,如果我有一个等于0的乘法问题,一旦我删除了前一个乘法问题的答案(保留输入为空),结果将返回true并执行if语句。我怎样才能防止这种情况

 ngOnInit() { this.multiply(); }
  f1 =  0;
  f2 =  0;
  answer:number = 0;
  input:number = 0;
 
  multiply():void{
    this.f1 = Math.floor(Math.random() * 12);
    this.f2 = Math.floor(Math.random() * 12);

    this.answer = this.f1 * this.f2;

    console.log(this.answer);
  }

  checkAnswer(event){
      this.input = event.target.value;

      if(this.input == this.answer){
        console.log(this.input + " " + "is correct!");

        this.multiply();
      } else{
        console.log(this.input + " " + "is incorrect" + " "  + this.answer);
      }
    }
}
使用
==
而不是
=
所以你的if语句应该是

if(this.input === this.answer){
说明:

  • =
    只比较
    而不比较
    数据类型
  • =
    比较值和数据类型
示例:

  • '==0=>true
    (true是因为
    ==
    只检查值)
  • '==0=>false
    (错误,因为
    ==
    同时检查值及其数据类型)

如果、如果语句为真,则重置输入值

event.target.value=null


防止用户触发输入事件以清除输入。因此,如果this.answer==0和this.input==0,则不必运行checkAnswer函数

尝试
this.input=event.target.value.trim()尝试使用“==”而不是“==”我更新了下面的答案,我尝试了“==”但没有成功。即使答案是正确的,它也会返回false。@Creatif_IV您可以控制台吗?记录您的答案和输入值,并检查它们是否相同?请在这里同时提及这两个值。好的,我现在知道了,.i console.log(typeof this.input)。正在将输入标识为字符串。0和“”(空字符串)返回“true”。奇怪。