Javascript 为什么空输入值等于true?
如果输入等于答案,则假定此代码在输入时执行。 相反,如果我有一个等于0的乘法问题,一旦我删除了前一个乘法问题的答案(保留输入为空),结果将返回true并执行if语句。我怎样才能防止这种情况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()
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){
说明:
只比较=
而不比较值
数据类型
比较值和数据类型=
(true是因为'==0=>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”。奇怪。