我正在编写一个验证一段文本的小函数,我对验证感到非常沮丧。
问题是:当我尝试将字符串与 null 进行比较(以检查取消按钮)时,它的工作取决于我放置条件的位置!它似乎只有在我开始验证时才有效。我也针对每种情况用括号对其进行了测试,但我得到了相同的结果。
这里发生了什么?
我在 Stack Overflow 上找到了这个答案,但它是针对 Python 的,我不太理解它:
Does the Order of Conditions affect Performance?
代码
function validate()
{
var isValid = false;
var text;
while (isValid == false)
{
text = prompt("Enter one text between 1 and 10 characters, no empty, blank spaces, only numbers");
/*
WITH NULL (CANCEL BUTTON) VALIDATION AT THE BEGINNING,
IT WORKS:
*/
if (text != null &&
(text.length >= 1 && text.length <= 10) &&
text != "" &&
isNaN(text) == false)
{
isValid=true;
}
/*
WITH NULL (CANCEL BUTTON) VALIDATION AT ANOTHER POSITION, IT DOESN´T WORK:
It generates "TypeError:Text is null"
*/
if ( (text.length >= 1 && text.length < 10) &&
isNaN(text) == false && text != "" && text !=null)
{
isValid = true;
}
}
if (isValid == true)
{
// Some code when validation is OK
}
}
最佳答案
您要先检查文本是否不为空,因为如果该条件失败,则不会评估其余条件,因为 && 不变量已被违反。如果文本为空,并且空检查发生在其他检查之后,您将收到错误。
关于javascript - 为什么这个 JavaScript 验证会根据条件的顺序工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40620536/