Javascript array.prototype.every在函数内部不起作用

Javascript array.prototype.every not working inside function?

本文关键字:函数 内部 不起作用 every array prototype Javascript      更新时间:2023-09-26

全部,

请参阅以下代码笔

http://codepen.io/anon/pen/eJNMwJ

我正试图将一组字符串传递到名为Validate email的函数中,该函数反复检查电子邮件,看看它们是否与正则表达式匹配。

然而,由于某些原因,此功能似乎不起作用。

正则表达式是正确的

    var validEmail = /^(['w-]+(?:'.['w-]+)*)@((?:['w-]+'.)*'w['w-]{0,66})'.([a-z]{2,6}(?:'.[a-z]{2})?)$/i;
function validEmailList(emails) {
                console.log("running test 2");
        return emails.every(function (email) {
            validEmail.test(email.trim());
        });
    };
    emails = ['bob@bob.com', 'foobar@bob.com'];
    $('.test1').append(validEmail.test("foobar@foo.com"));
    $('.test2').append(validEmailList(emails));

函数似乎没有返回任何内容,我希望得到一个布尔值。

传递给every的函数也必须有return之类的东西。

function validEmailList(emails) {
            console.log("running test 2");
    return emails.every(function (email) {
        return validEmail.test(email.trim());
    });
};

尽管如果使用箭头语法,return是隐含的:

function validEmailList(emails) {
    return emails.every( email => validEmail.test(email.trim()) );
}

Array.prototype.every调用的回调需要返回一个布尔值:

return emails.every(function (email) {
  return validEmail.test(email.trim());
//^^^^^^^
});