#javascript #function #variables #boolean #return
#javascript #функция #переменные #логическое #Возврат
Вопрос:
Я пытаюсь возвращать переменные как true или false с помощью функции. Я хочу сделать это таким образом, чтобы я мог вызвать ajax только один раз и получить обе переменные обратно в одной функции. Однако у меня возникли проблемы с возвратом переменной. Вот мой код:
var emailExists = false;
var userExists = false;
function checkExisting(emailExists,userExists) {
var emailExists = true;
return emailExists;
}
alert(emailExists);
Чего я не могу понять, так это почему предупреждение выдает мне false, когда я думал, что оно выдаст мне true. Что не так с этой настройкой?
Ответ №1:
У вас есть 3 версии переменной «emailExists»: глобальная, параметр для checkExisting() и локальная в checkExisting()! Избавьтесь от всех, кроме первой. Кроме того, вы никогда не вызываете checkExisting() .
var emailExists = false;
function checkExisting() {
emailExists = true;
}
checkExisting();
alert(emailExists);
или
var emailExists = false;
function checkExisting() {
return true;
}
emailExists = checkExisting();
alert(emailExists);
Комментарии:
1. Потрясающе! Это именно то, что мне было нужно. Большое вам спасибо, я буду использовать это.
Ответ №2:
var emailExists = false;
var userExists = false;
function checkExisting(emailExists,userExists) {
emailExists = true;
return emailExists;
}
checkExisting(false,true); //FOR EXAMPLE !
alert(emailExists);
Вы должны вызвать функцию checkExisting, и не нужно использовать из var
в тело функции, потому что это определено на странице .
Комментарии:
1. Спасибо за ответ! Это работает нормально, однако я хотел бы использовать проверку ajax внутри функции, чтобы определить, являются ли эти функции истинными или нет. Использование этой системы при вызове функции не проверяет это. Вот почему я сделал, чтобы это стало true в функции, но в этом и проблема. Есть идеи, как это сделать таким образом?
Ответ №3:
Короче говоря … все.
Я так понимаю, вы новичок в javascript и программировании? Вам нужно много читать, чтобы понять область видимости объекта и как работает javascript. Я дам вам краткий обзор того, что вы написали, чтобы вы могли, надеюсь, чему-то научиться.
// Here you're declared two objects. 'emailExists' and 'userExists'.
// These Boolean objects, since they are not wrapped in a closure are now global
// (you can reference them anywhere) in your script.
var emailExists = false;
var userExists = false;
// This function never gets called. If it did, it would always return true
// since you have created a new 'emailExists' Boolean object in your function
// and would return that each time.
function checkExisting(emailExists,userExists) {
// This whilst only available within the function closure, is a no, no.
// You're just confusing things by creating objects with the same name
// as global ones.
var emailExists = true;
// I'm returning true.
return emailExists;
}
// Here you are returning your first declared Boolean (the one at the top)
// this will always return false.
alert(emailExists);
Комментарии:
1. Хорошо, я понимаю. На самом деле у меня есть функция, вызванная непосредственно перед этим, хотя я ее не включал. Но большое вам спасибо, я ценю это!