2015-03-02 8 views
-1

Я пытаюсь вызвать функцию в рамках другой функции. Я создал две произвольные строки, которые соответствуют пользовательскому имени пользователя и паролю. Моя первая функция - это функция входа в систему, которая предлагает пользователю создать имя пользователя и пароль. Когда это будет сделано, я вызову свою функцию аутентификации, чтобы гарантировать, что пользовательское имя пользователя и пароль совпадают с произвольными строками. Тем не менее, я продолжаю получать «userName», не определен в функции аутентификации, что я могу понять, почему, но у меня все еще есть проблемы. Любая помощь будет оценена по достоинству.вызов функции внутри функции - Javascript

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(); 
+3

Вы должны сделать некоторые чтения на видимости переменной, чтобы узнать, какие переменные могут быть доступны откуда. – Sirko

+0

Определенно! спасибо – alexg

ответ

2

Вы передаете имя пользователя и пароль функции как аргументы, но вы не используете аргументы в функции приема. Добавьте их в качестве именованных аргументов в объявлении функции:

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

примечание стороны: декларации функции не являются заявления, они не должны быть прекращены с ; (хотя это безопасно, если вы делаете) , Вот три стандарта (в настоящее время) способов создания функции:

декларация Функция (происходит до любого кода в объеме работает, не точка с запятой, не должно быть на высшем уровне глобальной или области видимости функции [например, может «т быть непосредственно внутри блока, связанного с if или while или аналогичный):

function foo() { 
    // ... 
} 

выражение функции Анонимный (происходит, когда он встречается в оценке шаг за шагом кода); Примеры:

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

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

bar(function() { 
}); 

ES6 определяет правила, по которым эти функции могут получить имена, и эти правила реализуются некоторыми двигателями в настоящее время, но и в теории функций выше, не имеют имен.

Названный функция выражения (НФО) (так же, как анонимный один, но fucntion получает имя):

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

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

bar(function foo() { 
}); 

Некоторые старые двигатели get this wrong, но они выцветанию сейчас, к счастью, ,

+0

Спасибо! Задача решена. И спасибо за побочный эффект. Я работал над хромированными фрагментами, поэтому у меня не было проблемы с полуколонами после моих функций, но полезно знать – alexg

0

Вы должны принять и имя пользователя PAssword в качестве входных параметров для функции Authenticate.

так:

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

Спасибо, очень благодарен :) – alexg

Смежные вопросы