0

下面的代码代表了我想要实现的想法,但是当我测试它不起作用时,测试 q1 和 q2 是否等于 true 的适当方法是什么?

function processForm() {
  if(q1_valid = true && q2_valid = true){
    alert("yes");
    } else {
    alert("no");
  }
}
4

2 回答 2

1

当您=在 javascript(和大多数类似 C 的语言)中使用 simple 时,会发生什么是您分配变量,然后返回所述分配的结果。

以代码为例a = b = true。这可以拆分为a = (b = true). 现在,如果我们只看括号内的部分,你会发现它首先将 b 设置为 true,然后返回 b。然后,在括号之外,它将 a 设置为 b 的任何值(原因是true),并返回 a 的值。a 的值无处可去,所以它被简单地丢弃了。

现在,如果我们回到你的 if 测试,你最终得到的基本上是这样的:

  1. 设置q1_validtrue
  2. true(q1_valid 的值)返回给&&操作员。
  3. true是有效的,&&所以它看起来在右手边。
  4. 设置q2_validtrue
  5. 返回. true_&&
  6. &&现在true两边都有。退货true

测试总是通过。q1_valid并且q2_valid总是true在测试运行之后。

简单的解决方案是替换===(equals) 或===(type and value equals)。您的 if-check 应如下所示:

1.

if(q1_valid == true && q2_valid == true)

2.

if(q1_valid === true && q2_valid === true)

此外,由于使用布尔值(值是真或假),因此可以完全省略检查是否等于真。另一种方法就是这样:

if(q1_valid && q2_valid)
于 2013-04-21T04:18:45.927 回答
0

这里有两个问题:

您需要使用两个等号进行比较==

函数中不存在变量,调用函数时需要将它们作为参数传递

function processForm(q1_valid, q2_valid) {
  if(q1_valid == true && q2_valid == true){
    alert("yes");
    } else {
    alert("no");
  }
}
于 2013-04-21T04:15:45.943 回答