gpt4 book ai didi

javascript - && 运算符和 bool 函数返回 false 时的执行

转载 作者:搜寻专家 更新时间:2023-11-01 04:52:30 25 4
gpt4 key购买 nike

我不明白 javascript 的行为。

我正在对 jquery ui 对话框进行表单验证。看来这是一个 javascript 问题,而不是 jquery 问题。

为了验证,我为每个返回 true 或 false 的字段执行一个函数,一个 bool 变量接收连续 && 运算符的结果。像这样:

bValid = checkRegexp(validite, /^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$/, "Entrez la date de validit\350 sous la forme JJ/MM/AAAA." );
bValid = bValid && checkLength(libelle, "Libell\351", 1, 100 );
bvalid = bValid && checkLength(description, "Description", 1, 250);

以下是验证函数的信息:

function checkLength( o, n, min, max ) {
if ( o.val().length > max || o.val().length < min ) {
o.addClass( "ui-state-error" );
if(o.val().length == 0) { textError = textError + "le champ " + n + " est requis !\n"; }
else { textError = textError + "Taille de " + n + " entre " + min + " et " + max + "caract\350res.\n"; }
return false;
} else {
return true;
}
}

function checkRegexp( o, regexp, n ) {
if (!(regexp.test(o.val()))) {
o.addClass( "ui-state-error" );
textError = textError + n + "\n";
return false;
} else {
return true;
}
}

预期的行为是所有函数都被执行并且所有错误的字段都被标记为错误并串联错误消息。有关信息,bValid 变量包含连续 && 运算符的 bool 结果。最后一点有效;没问题。

真正的行为是当一个函数返回false时,下面的函数似乎没有被执行。结果是只有遇到的第一个错误的字段被标记为错误。

为什么?

最佳答案

因为 && 运算符被“短路”了。这意味着由于编译器/解释器/任何知道 && 运算符的两侧操作数必须为真,如果第一个为假则第二个不会被执行。

如果您希望您的函数确实执行,只需将操作数的顺序交换为 &&:

bValid = checkRegexp(validite, /^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$/, "Entrez la date de validit\350 sous la forme JJ/MM/AAAA." );
bValid = checkLength(libelle, "Libell\351", 1, 100 ) && bValid;
bvalid = checkLength(description, "Description", 1, 250) && bValid

关于javascript - && 运算符和 bool 函数返回 false 时的执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13940291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com