Javascript 如何从if-else语句中调用函数?
我试图在下面的if-else语句中调用pushChar函数()。执行后存储函数的变量是全局变量,为什么我不能调用它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 <
//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=[]
。另外,正如在注释中提到的,块闭包的问题(同样可以通过一致的缩进最小化)。