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