在函数中调用函数——Javascript
我试图在另一个函数中调用一个函数。我创建了两个任意字符串,与用户创建的用户名和密码相匹配。我的第一个函数是一个登录函数,提示用户创建用户名和密码。完成后,我将调用authenticate函数以确保用户创建的用户名和密码与任意字符串匹配。然而,我一直得到一个“用户名”没有在身份验证函数中定义,我可以理解为什么,但我仍然有问题。任何帮助都将不胜感激在函数中调用函数——Javascript,javascript,function,Javascript,Function,我试图在另一个函数中调用一个函数。我创建了两个任意字符串,与用户创建的用户名和密码相匹配。我的第一个函数是一个登录函数,提示用户创建用户名和密码。完成后,我将调用authenticate函数以确保用户创建的用户名和密码与任意字符串匹配。然而,我一直得到一个“用户名”没有在身份验证函数中定义,我可以理解为什么,但我仍然有问题。任何帮助都将不胜感激 var arbName = "wolverine"; var arbPass = "marvel"; function login(){ va
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();
您将用户名和密码作为参数传递给函数,但在接收函数中不使用参数。将它们作为命名参数添加到函数声明中:
function authenticate(userName, passWord){
// Here --------------^^^^^^^^^^^^^^^^^^
if (userName === arbName && passWord === arbPass){
alert ('true');
}else {
alert ('false');
}
}
旁注:函数声明不是语句,它们不需要用
终止代码>(尽管这样做是无害的)。以下是创建函数的三种标准(目前)方法:
函数声明(发生在作用域中的任何代码运行之前,没有分号,必须位于全局或函数作用域的顶层[例如,如果或while
或类似内容,则不能直接位于与关联的块内):
匿名函数表达式(在逐步计算代码时遇到);示例:
var f = function() {
// ...
};
var obj = {
f: function() {
}
};
bar(function() {
});
ES6定义了这些函数可以获得名称的规则,这些规则现在由一些引擎实现,但理论上上述函数没有名称
命名函数表达式(NFE)(与匿名表达式类似,但函数有名称):
谢天谢地,一些较旧的引擎现在正在衰退。您必须将用户名和密码作为功能验证的输入参数
像这样:
function authenticate(userName, passWord){
//your logic goes here
}
你应该阅读一些变量范围的知识,知道哪些变量可以从何处访问。非常肯定!谢谢!问题解决了。谢谢你的旁注。我一直在使用chrome代码段,所以我的函数后面没有分号的问题,但很高兴知道谢谢,非常感谢:)
var f = function foo() {
// ...
};
var obj = {
f: function foo() {
}
};
bar(function foo() {
});
function authenticate(userName, passWord){
//your logic goes here
}