在函数中包含return语句有什么好处?

时间:2015-12-28 02:40:41

标签: javascript jquery

我使用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语句有什么好处和缺点呢?

2 个答案:

答案 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也很有帮助。:)