2015-12-28 2 views
2

Я создал простой CAPTCHA с помощью JQuery. И хотя это прекрасно работает, я не думаю, что я делаю это правильно.Каковы преимущества включения оператора return в функцию?

При загрузке страницы, функция вызывается:

getAnswer(answer); 

Что:

function getAnswer() { 
    var min = 0; 
    var max = 50; 
    var ranNum1 = Math.floor(Math.random() * (max - min + 1)) + min; 
    var ranNum2 = Math.floor(Math.random() * (max - min + 1)) + min; 
    $('#ran1').html(ranNum1).show(); 
    $('#plus').html("+").show(); 
    $('#ran2').html(ranNum2).show(); 
    answer = ranNum1 + ranNum2; 
} 

И когда я сравниваю answer на вход пользователя:

if(answer != captcha) { 
    $('#captchaErr').html("CAPTCHA is Incorrect").show().delay(3000).fadeOut("slow"); 
    $('#captcha').focus(); 
    return false; 
} 

это работает , Но, смотря на много Q & А относительно этого здесь на SO, кажется, что я должен включить в функцию функцию return, которая также работает.

Поскольку это работает в обоих направлениях, каковы преимущества и недостатки, включая заявление return?

+0

искаженным, что это на стороне клиента (то есть только JavaScript) является совершенно бесполезным. – ceejayoz

+0

@ceejayoz - это не касается моего вопроса. – Landslyde

+0

Это для меня, моя практика. Я новичок в JQuery. У меня есть своя CAPTCHA, которую я создал с помощью PHP. – Landslyde

ответ

1

Вам не нужно возвращать какое-либо значение.

Прежде всего, переименуйте свою функцию в showQuestion или еще что-нибудь; как следует из названия, это только показывает вопрос, и это не геттер. answer переменная должна быть где-то хранить - не рекомендуется является глобальной переменной, но вы можете упаковать RAN1, плюс и RAN2 в один DIV, и установить поле данных:

$(document).ready(function() { 
    showQuestion(); 
} 

Последняя строка в showQuestion:

$('#question').data('answer', answer); 

ИЛИ вы можете оставить имя функции, как getQuestion(), вернуть правильный ответ и установить его в ready() функции.

Если вы хотите проверить, просто получить ответ:

var answer = $('#question').data('answer'); 

ноты, локальные переменные, а не глобальный характер.

Конечно, вы знаете, что captcha не может быть на стороне клиента?

+0

Я это знаю. Я изучаю JQuery и просто выбираю это как упражнение. Я написал тот же CAPTCHA с помощью PHP. Это то, что я использую. Это просто для учебных целей. Я поражен силой JQuery. Это огромный мир, который очень интересен. И я ценю ваш ответ. Спасибо. – Landslyde

0

Думаю, вам следует избегать использования Global Variable. Как глобальная переменная, вы, возможно, часто меняете ее и трудно отлаживаете с помощью глобальной переменной.
Постарайтесь понять closure в Js также полезно. :)

+0

piglovesx - Я сделаю это. Благодарю. – Landslyde

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