为什么我的代码无法识别密码中包含的字符


Why is my code not able to recognize that a password contains characters?

我正在制作一个登录表单。在提交之前,我会检查是否填写了所有字段。我还会检查密码是否超过7个字符,并且至少包含一个数字、至少一个字符和没有空格。我当前的代码一直告诉我,无论我输入什么,我都缺少一个字符。这是代码:

if($("#password").val()==""){
        error += "The password is required.<br>";   
    }
    else if($("#password").val().length<8){
        error += "Your password needs at least 8 characters.<br>";   
    }
    else if($("#password").val().length >= 8){
        var pass = $("#password").val().split("");
        var hasNum = false;
        var hasChar = false;
        var hasSpace = false;
        for(var i = 0; i < pass.length; i++){
            if(pass[i] == " "){
                hasSpace = true;
            }
            else if(Number(pass[i]) == NaN){
                hasChar = true;
            }
            else if(Number(pass[i]) != NaN){
                hasNum = true;
            }

        }
        if(!hasChar){
            error += "Your password must contain at least one character.<br>";
        }
        if(!hasNum){
            error += "Your password must contain at least one number.<br>";
        }
        if(hasSpace){
             error += "Spaces are not allowed in a password.<br>";   
        }
    }

我先查一下空位。然后我检查一个字符是否可以转换为数字。如果不是,那么它必须是一个字符串。如果可以转换,则它必须是一个数字。无论我输入什么,它总是说"你的密码必须至少包含一个字符"。我该怎么解决这个问题?如果有必要,我会给你更多的代码。

问题是NaN将不等(通过==、!=、===和!==)与任何其他值进行比较,包括与另一个NaN

NaN === NaN;// false
Number('S') == NaN; //false
Number(10) == NaN; //false

请尝试使用isNaN()