包括在Javascript中不检查数组输入的方法

时间:2018-06-15 17:35:34

标签: javascript arrays

首先,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函数中错过了一个参数?

1 个答案:

答案 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 ();