调用函数内的函数 - Javascript

时间:2015-03-02 09:40:03

标签: javascript function

我试图在另一个函数中调用函数。我创建了两个任意字符串以匹配用户创建的用户名和密码。我的第一个功能是一个登录功能,提示用户创建用户名和密码。完成后,我将调用我的身份验证功能,以确保用户创建的用户名和密码匹配任意字符串。但是,我一直得到一个“用户名”'在身份验证功能中没有定义,我可以理解为什么,但我仍然遇到麻烦。任何帮助将不胜感激。

var arbName = "wolverine";
var arbPass = "marvel";

function login(){
    var userName = prompt ('enter username');
    var passWord = prompt ('enter password');
    authenticate (userName, passWord);
};

function authenticate(){
    if (userName === arbName && passWord === arbPass){
       alert ('true');
    }else {
       alert ('false');
    }
};
    login();

2 个答案:

答案 0 :(得分:2)

您将用户名和密码作为参数传递给函数,但您不会在接收函数中使用参数。将它们作为命名参数添加到函数声明中:

function authenticate(userName, passWord){
// Here --------------^^^^^^^^^^^^^^^^^^
    if (userName === arbName && passWord === arbPass){
       alert ('true');
    }else {
       alert ('false');
    }
}

旁注:函数声明不是语句,它们不需要以;终止(尽管如果你这样做是无害的)。以下是创建函数的三种标准(现在)方法:

函数声明(在作用域中的任何代码运行之前发生,没有分号,必须位于全局或函数作用域的顶层[例如,不能直接位于与{关联的块中] {1}}或if或类似的):

while

匿名函数表达式(在代码的逐步评估中遇到);示例:

function foo() {
    // ...
}

ES6定义了这些函数可以获取名称的规则,这些规则现在由某些引擎实现,但理论上上面的函数没有名称。

命名函数表达式(NFE)(就像匿名函数一样,但函数获取名称):

var f = function() {
    // ...
};

var obj = {
    f: function() {
    }
};

bar(function() {
});

一些较旧的引擎get this wrong但现在它们正在消失,谢天谢地。

答案 1 :(得分:0)

您必须将 userName passWord 作为身份验证功能的输入参数。

像这样:

function authenticate(userName, passWord){
    //your logic goes here
}