[英]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”。
有人能告诉我这是否正确吗? 谢谢!
你的功能:
设置变量及其值var x = 10
检查条件,直到其中之一“是” true
(返回true
)
(null)
返回自身,因此函数会检查其他条件 (console.log("Hello"))
返回任何内容( null
),因此该函数会检查其他条件
x > 5
返回true
,因此if{ < code > }
的代码执行发生
(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.