[英]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.