将javascript函数存储在变量中

时间:2015-09-09 01:09:28

标签: javascript function variables

我正在尝试从javascript函数返回一个值,该函数检查多个电子邮件地址的字符串是否包含有效的电子邮件:

validateEmail函数:

validateEmail = function(email) {
    var re = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
    return re.test(email);
} // this returns true/false

var emails = ["asdf@yahoo.com", "dfdf@yahoo.com"]

var emailResult = function(emails) {
        var result;
        emails.forEach(function(email) {
            if(validateEmail(email.trim()) === false) {
                result = false;
            }
        });
        return result
    }

如果任何电子邮件有效,我希望emailResult等于false。但是,当我运行console.log(emailResult)时,我只是打印出我的函数代码。有人可以帮忙吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

您正在将函数本身发送到console.log()。您需要调用该函数,并将函数的结果传递给console.log(),如下所示:

console.log(emailResult(emails));

答案 1 :(得分:0)

那是因为你需要调用这个函数。如果你改为console.log(validateEmail("test@"test.com"));,你可以让它工作,或者你可以这样重构:

function validateEmail (email) {
       var re = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
       return re.test(email);
} // this returns true/false

var emails = ["asdf@yahoo.com", "dfdf@yahoo.com"]

var emailResult = function(emails) {
       var result;
       emails.forEach(function(email) {
              if(validateEmail(email.trim()) === false) {
                     result = false;
              }
       });
       return result
}

var theEmails = validateEmail("Test@Test.com");