繁体   English   中英

变量返回False,但是if语句不确认它

[英]Variable Returns False, but if statement doesn't acknowkedge it

我有一个if语句,如果变量返回false,则应该执行代码,但是即使我已经检查并确保变量返回false,代码也不会执行。 这是代码:

解决方案:我似乎意外地将了if语句放错了位置,并将其移动并修复了程序。 谢谢所有帮助我解决问题的人

 function letterCheck() { var wordToGuess = puzzle; var letterToGuess = guess; console.log(letterToGuess); matched = false; for (x = 0; x < wordToGuess.length; x++) { if (letterToGuess === wordToGuess[x]) { console.log('Your guess was correct!'); console.log('You have', 6 - parts, 'incorrect guesses remaining'); blanks[x] = letterToGuess; console.log(blanks); var fillBlank = ''; for (y = 0; y < blanks.length; y++) { fillBlank += blanks[y]; } document.getElementById('puzzle').innerHTML = fillBlank; matched = true win++ if (win === puzzle.length) { setTimeout(() => alert("You win!"), 100) } break; } } } //this is the if statement that is not working if (this.matched === false) { console.log("Your guess was incorrect!"); parts++; graphics[parts - 1](); console.log('You have', 6 - parts, 'incorrect guesses remaining'); } 

“ matched”和“ this.matched”是2个不同的变量。 “ matched”是全局的,“ this.matched”是函数的局部变量。

解决方法:在任何地方都使用“ matched”或“ this.matched”-请勿混用。

首先要问一些基本问题。 您正在使用哪种编程语言?

我将假定您正在使用JavaScript,因为这是我想到的唯一具有===运算符的语言。 身份运算符===行为与相等运算符==相同,只是不进行类型转换。 身份运算符要求所有类型必须是相同的类型才能被视为相等。

因此, ==相等运算符将在进行任何必要的类型转换后比较相等性,而===身份运算符将不进行转换,因此,如果两个值不是同一类型,则该身份运算符将仅返回false。

两个运算符的执行速度大致相同,因此,如果您是我,我将切换到相等运算符,然后重试。 让我知道你得到什么!

参考: http : //www.c-point.com/javascript_tutorial/jsgrpComparison.htm

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM