Javascript—为什么这个if语句会打印“Javascript”;“你好”;两次在控制台?
对于此示例代码,它会在控制台中打印两次“Hello”:Javascript—为什么这个if语句会打印“Javascript”;“你好”;两次在控制台?,javascript,Javascript,对于此示例代码,它会在控制台中打印两次“Hello”: var x=10; if((null)| |(console.log(“Hello”)| | x>5){ console.log(“你好”); }console.log的返回类型为未定义 您将看到console.log输出两次,因为您已经调用了两次: 一次在if条件中,下一次在if语句中 您的if语句将运行,因为您正在使用OR,并且x=10>5if语句首先遇到null,这是false,然后执行console.log(),它返回undefi
var x=10;
if((null)| |(console.log(“Hello”)| | x>5){
console.log(“你好”);
}
console.log的返回类型为未定义
您将看到console.log输出两次,因为您已经调用了两次:
一次在if条件中,下一次在if语句中
您的if语句将运行,因为您正在使用OR,并且x=10>5
if
语句首先遇到null
,这是false,然后执行console.log()
,它返回undefined
,因此也是false,最后是x>5
,这是true。因此,if
语句为true,它进入正文并进行另一次打印
我假设当读取“if”语句时,它读取console.log,然后打印它,因为x>5,所以返回语句为true,然后控制台第二个“Hello”
更准确地说,“if”语句是执行的。具体而言,对条件进行评估。由于null
为“false”,因此将计算|
运算符的右侧。它执行第一个console.log()
。这依次返回未定义的
,这也是“false”,并计算下一个|
的下一个操作数x>5
的计算结果为true
,因此执行第二个console.log()
请注意,这不是编写代码的好方法console.log()
不应在条件下使用。它的返回值没有意义,因为它总是返回未定义的您编写的第一个console.log位于if语句中,在计算if语句时将调用该函数。如果满足if语句中的条件,将调用第二个语句。console.log本身返回未定义的,并且在if语句中没有真正的用途。我会建议删除它,因为我不相信它是实现你的意图
祝你好运:)你的功能:
设置变量及其值var x=10
检查条件,直到其中一个“为”true
(返回
true
)
(null)
返回自身,因此函数检查其他条件
(console.log(“Hello”)
不返回任何内容(null
),因此函数
检查其他情况
x>5
返回true
,因此如果发生{}
,则执行中的代码
(console.log(“Hello”)
如果{}
执行,则在内部执行
如您所见,(console.log(“Hello”)
在检查if
语句内部的条件和执行该if
语句的“内部”时同时执行。这就是为什么您会看到“Hello”被记录了两次。为了进一步澄清,第一和第二个条件语句将始终执行,因为即使运算符是&&,它也需要至少从两个条件进行验证。@alex067这不太正确:如果它是
&
且LHS为false,翻译将短路并跳过RHS(无需评估,因为整体将是错误的)。@Klaycon哦,是的,这是真的,对不起,我没有思考straight@alex067在|
的情况下,如果第一个操作数的计算结果为true
,则将不计算其余操作数。