首先,Javascript的新手...试图编写好的代码! 作为我正在编写的应用程序的测试,我希望通过提示检查用户的名称输入一个数组,该数组将使用户继续前进或阻止用户这样做。
当我为变量赋值时,我可以使包含正确过滤:
var name, excluded_Persons;
var name = "jim"
function denyEntry () {
var excluded_Persons = ["bob", "jim"];
if (excluded_Persons.includes(name)) {
alert("You may not enter!!");
enterName ();
}
else {
allowEntry ();
}
}
denyEntry ();
function allowEntry () {
alert("You have been granted access!!");
}
返回“你可能不会进入!” 但是,当我包含允许用户输入名称的功能时,
var name, excluded_Persons;
function enterName () {
var name = prompt("What is your name?").toLowerCase();
}
enterName ();
function denyEntry () {
var excluded_Persons = ["bob", "jim"];
if (excluded_Persons.includes(name)) {
alert("You may not enter!!");
enterName ();
}
else {
allowEntry ();
}
}
denyEntry ();
用户输入的任何名称(包括“bob”和“jim”)都会返回“您已被授予访问权限!”正在绕过包含功能。
我是否在enterName函数或denyEntry函数中错过了一个参数?
答案 0 :(得分:1)
您正在重新声明函数enterName()
内的名称,因此其范围仅限于该函数。创建名称全局变量:
var name, excluded_Persons;
function enterName () {
name = prompt("What is your name?").toLowerCase();
}
enterName ();
function denyEntry () {
var excluded_Persons = ["bob", "jim"];
console.log(name);
if (excluded_Persons.includes(name)) {
alert("You may not enter!!");
enterName ();
}
else {
allowEntry ();
}
}
denyEntry ();