提问者:小点点

为什么if条件语句在else if(false)之后终止,尽管在这个if条件语句中还有另一个else if?


我用NodeJS编写了这段代码:

let letters = /^[A-Za-z]+$/;
let letter2 = /^[a-z_]+$/;


const registerChecker = async(firstName,lastName,username, email, password, password2) =>{
    let errors = [] 
    // Check required fields
    if(!firstName||!lastName||!username|| !email|| !password || !password2){
        errors.push({msg:'Please fill all fields'})
    }else if(!firstName.match(letters)){
        errors.push({msg:'Firstname must contain only Latin lowercase and uppercase letters("a"-"z")("A"-"Z")'})
    }else if(!lastName.match(letters)){
        errors.push({msg:'Lastname must contain only Latin lowercase and uppercase letters("a"-"z")("A"-"Z")'})
    }else if(username){
        if(!username.match(letter2)){
            errors.push({msg:"Username must contain only lowercase Latin letters ('a' - 'z'), numbers, and underscores ('_')"})
        }
    }else if(password.length<6){
        console.log('Less than 6')
        // Password length
        errors.push({msg:'Password must be at least 7 characters'})
    }else if(password2 !== password){
        // Matching Password
        errors.push({msg:'Password do not match'})
    }
    
    
    return errors
}
registerChecker('firstname','lastname','user_me','hello@gmail.com','pass','fs').then(s=>console.log(s)).catch(er=>console.log(er))

当我运行这段代码时,它可以完美地工作till(else if(password.length<;6))。 但是这个(else if(password.length<;6))else if和under它根本不起作用。 为了正确地编写这段代码,我应该做些什么呢?


共1个答案

匿名用户

Shakhriyor,你有没有意识到如果其中一个测试是真的,其他部分就不会再开火了?

我会认为不止一个条件是真的,你想要测试所有的条件。 而不是在第一个是真的之后就停止。

这意味着您必须依次进行测试,而不是嵌套,以便测试在第一个阳性条件后停止。