我使用JQuery编写了一个简单的CAPTCHA。虽然它工作正常,但我认为我没有采用正确的方式。
加载页面时,会调用该函数:
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;
}
它有效。但是在SO上看这个关于这个问题的很多Q& A时,似乎我应该在函数中包含一个return
语句,这也有效。
既然它有两种方式,那么包含return
语句有什么好处和缺点呢?
答案 0 :(得分:1)
您不需要返回任何值。
首先,将您的函数重命名为showQuestion
或其他内容;顾名思义,它只显示问题,而且不是吸气剂。 answer
变量应存储在某处 - 不建议使用全局变量,但您可以将 ran1 , plus 和 ran2 打包到一个DIV中,并设置数据字段:
$(document).ready(function() {
showQuestion();
}
showQuestion
中的最后一行:
$('#question').data('answer', answer);
或者您可以保留getQuestion()
之类的函数名称,返回正确答案并在ready()
函数中设置它。
如果您想验证,只需获得答案:
var answer = $('#question').data('answer');
请注意本地变量,而不是全局变量。
当然你知道验证码不能成为客户端吗?
答案 1 :(得分:0)
我认为你应该避免使用Global Variable
。作为一个全局变量,您可能经常更改它,并且难以使用全局变量进行调试
尝试理解closure
中的Js
也很有帮助。:)