繁体   English   中英

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

[英]Javascript - Why does this if statement print "Hello" twice in the console?

对于此示例代码,它会在控制台中打印两次“Hello”:

 var x = 10; if ( (null) || (console.log("Hello")) || x > 5 ) { console.log("Hello"); }

我假设当“if”语句被读取时,它读取console.log,然后打印它,因为x> 5,返回语句为真,然后控制台第二个“Hello”。

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

你的功能:

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

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

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

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

  6. (console.log("Hello")) if{ }执行。

正如你所看到的, (console.log("Hello"))执行两种,而检查内部情况if声明,而执行的是“内侧” if 这就是为什么您会看到“Hello”记录了 2 次。

console.log 的返回类型为 undefined。

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

一次在您的 if 条件中,然后在您的 if 语句中。

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

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

我假设当“if”语句被读取时,它读取console.log,然后打印它,因为x> 5,返回语句为真,然后控制台第二个“Hello”。

更准确地说,是执行“if”语句。 具体而言,评估条件。 由于null是“falsey”,所以||的右边运算符进行评估。 它执行第一个console.log() 这反过来返回undefined这也是“falsey”和下一个||的下一个操作数被评估。 x>5评估为true ,因此执行第二个console.log()

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

你写的第一个 console.log 是在 if 语句中,当 if 语句被评估时,该函数将被调用。 如果满足 if 语句中的条件,将调用第二个语句。 console.log 本身返回 undefined 并且在你的 if 语句中没有真正的目的。 我建议将其删除,因为我认为它无法实现您的预​​期 祝您好运 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM