Javascript-为什么if语句在控制台中两次打印“ Hello”?

时间:2019-11-25 23:16:54

标签: javascript

对于此示例代码,它将两次在控制台中输出“ Hello”:

var x = 10;

if ( (null) || (console.log("Hello")) || x > 5 ) {

  console.log("Hello");

}

我假设当读取“ if”语句时,它将读取console.log,然后将其打印出来,并且由于x> 5,return语句为true,然后对第二个“ Hello”进行控制台。

有人可以告诉我这是否正确吗?谢谢!

5 个答案:

答案 0 :(得分:4)

您的功能:

  1. 设置变量,其值为var x = 10

  2. 检查条件,直到其中一个条件为“ true”(返回 true

  3. (null)返回自身,因此函数检查其他条件
  4. (console.log("Hello"))不返回任何内容(null),因此该函数 检查其他情况

  5. x > 5返回true,因此发生了if{ < code > }内部代码的执行

  6. (console.log("Hello"))内部的
  7. if{ }执行。

如您所见,在检查(console.log("Hello"))语句内的条件以及执行该if的“内部”时,都执行了if。这就是为什么您看到“ Hello”记录了2次的原因。

答案 1 :(得分:0)

console.log的返回类型为undefined。

您两次看到console.log输出,因为您已经两次调用它:

在if条件中一次,在if语句中下一个。

您的if语句将运行,因为您使用的是OR,并且x = 10> 5

答案 2 :(得分:0)

if语句首先遇到null,它是错误的,然后是console.log(),它返回undefined,所以它也是false,最后是x > 5 ,这是真的。因此if语句为true,它进入正文并进行另一次打印。

答案 3 :(得分:0)

  

我假设当读取“ if”语句时,它将读取console.log,然后将其打印出来,并且由于x> 5,return语句为true,然后对第二个“ Hello”进行控制台。

更准确地说,语句已执行。具体地,评估条件。由于null为“假”,因此将评估||运算符的权限。执行第一个console.log()。依次返回undefined,它也是“假”,并计算下一个||的下一个操作数。 x>5的值为true,因此第二个console.log()被执行。

请注意,这不是编写代码的好方法。 console.log()不应在这样的if条件内使用。它的返回值没有意义,因为它总是返回undefined

答案 4 :(得分:0)

您编写的第一个console.log在if语句中,当评估if语句时将调用该函数。如果满足if语句中的条件,则将调用第二条语句。 console.log本身返回未定义,并且没有实际用途要包含在if语句中。我建议删除它,因为我不认为它可以实现您的预​​期 祝你好运:)