javascript - javascript是否在 bool 表达式中使用优化?

标签 javascript

<分区>

当我决定使用经典的 javascript 构建普通的网络表单验证时,我遇到了奇怪的错误。有几个用于输入文本字段的“onblur”处理程序和一个“表单提交”处理程序。

当我这样使用它们时:

function loginCheck() {
  ... return true of false 
}

function passwordCheck() { 
   ...
}

function formValidation() {
  return loginCheck() && passwordCheck();
}

它没有像我预期的那样工作:如果 loginCheck 失败,则不会调用“passwordCheck”!

终于有了解决方法

function formValidation() {
  ok = loginCheck();
  ok &= passwordCheck();
  return ok;
}

现在执行密码检查。但是当我选择:

function formValidation() {
      ok = loginCheck();
      ok = ok && passwordCheck();
      return ok;
    }

如果 loginCheck 失败,则不再调用 passwordCheck。

此外:loginCheck & passwordCheck 返回 bool 值,但 &= 运算符将其隐藏为“0”或“1”。 “0”对我的 onsubmit="return checkForm" 处理程序不起作用。我必须再次将我的 &= 结果转换为 bool 值:

function formValidation() {
      ok = loginCheck();
      ok &= passwordCheck();
      return ok != 0;
    }

这是 javascript 引擎的正常行为吗?

最佳答案

是的,这很正常。它叫做 short-circuit evaluation并且既方便又非常常见(即存在于许多语言(C、C++、Java、Perl 等)中,而不仅仅是 JavaScript)。

关于javascript - javascript是否在 bool 表达式中使用优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7858787/

相关文章:

javascript - Froala 编辑器图像编辑选项现在显示

javascript - Kendo Checkbox 检查事件

javascript - for...in 循环和原型(prototype)链

javascript - 获取意外 token ILLEGAL JS 错误

javascript - 两个下拉菜单,它们与 php 和 javascript 相关

javascript - 制作动态大小的盒子

javascript - 我应该采用哪种圆 Angular 方法?

javascript - react /归零 : Should containers have any knowledge of state structure?

javascript - 选择哪种格式在 D3.js 中动态存储和显示数据?

javascript - babel loader 仅处理文件