Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从if-else语句中调用函数?_Javascript_Function_If Statement_Scope - Fatal编程技术网

Javascript 如何从if-else语句中调用函数?

Javascript 如何从if-else语句中调用函数?,javascript,function,if-statement,scope,Javascript,Function,If Statement,Scope,我试图在下面的if-else语句中调用pushChar函数()。执行后存储函数的变量是全局变量,为什么我不能调用它 //Creates final array out of random characters from the arraypool that was created by the users criteria inputs. function pushChar() { var randomPassword = []; for (var i = 0; i <

我试图在下面的if-else语句中调用pushChar函数()。执行后存储函数的变量是全局变量,为什么我不能调用它

//Creates final array out of random characters from the arraypool that was created by the users criteria inputs.

function pushChar() {
    var randomPassword = [];
    for (var i = 0; i < pwLength; i++) {
        var item = passwordPool[Math.floor(Math.random() * passwordPool.length)];
        randomPassword.push(item);
    }
    return randomPassword;
}
var password = pushChar();


//validate that all of the conditions were met.

var checkUpper = (upperCaseChar.some(ele => password.includes(ele)))
var checkLower = (lowerCaseChar.some(ele => password.includes(ele)))
var checkNumeric = (numericChar.some(ele => password.includes(ele)))
var checkSpecial = (specialChar.some(ele => password.includes(ele)))

console.log(checkUpper);
console.log(checkLower);
console.log(checkNumeric);
console.log(checkSpecial);


if (checkUpper === confirmUpper &&
    checkLower === confirmLower &&
    checkNumeric === confirmSpecial &&
    checkSpecial === confirmNumber) {
    console.log(password);
} else {
    alert("somethings missing");
    pushChar(); //why won't this run??
}



//Presents randomly generated password to the user as a string. 
return password.join("");

}
//从用户标准输入创建的arraypool中的随机字符创建最终数组。
函数pushChar(){
var randomPassword=[];
对于(变量i=0;ipassword.includes(ele)))
var checkLower=(lowerCaseChar.some(ele=>password.includes(ele)))
var checkNumeric=(numericChar.some(ele=>password.includes(ele)))
var checkSpecial=(specialChar.some(ele=>password.includes(ele)))
console.log(checkUpper);
console.log(checkLower);
console.log(checkNumeric);
console.log(checkSpecial);
如果(检查上限===确认上限&&
checkLower===confirmLower&&
checkNumeric===confirmSpecial&&
检查特殊===确认编号){
console.log(密码);
}否则{
警惕(“某些东西丢失”);
pushChar();//为什么不运行此命令??
}
//以字符串形式向用户显示随机生成的密码。
返回密码。加入(“”);
}

这是因为第8行有一个额外的关闭花括号,而第6行已经有一个关闭for循环。请考虑修改代码的缩进,以使这些琐碎的错误可以很容易地被注意到。我认为这是关闭函数,正如所希望的那样(之后的所有内容都不是该函数的一部分)-我认为函数之前或其他地方缺少一些代码。欢迎!我和其他人一起提出一个建议:使用适当的缩进=更容易阅读和理解,并捕获诸如额外/缺少右括号等错误。我不确定我是否需要添加所有代码,因为它只是在我关心的函数之后。我也不认为我的格式有那么差,我对这个很陌生,所以仍然在学习。谢谢你关于格式的建议,但是关于这个问题的任何建议?
pwLength
在调用
pushChar
时是未定义的,因此循环不会运行,因此
password
获取一个从
pushChar
返回的空数组
randomPassword=[]
。另外,正如在注释中提到的,块闭包的问题(同样可以通过一致的缩进最小化)。