任何人都可以解释一下,为什么这段代码会打印出来"最近怎么样?"
if(x=21) 342423
console.log('whats going on?')
我不小心在if条件语句旁边键入了一个数字,就像上面的程序一样。这引起了一个奇怪的副作用,条件语句被短路,即使括号中的东西被评估为假。令人讨厌的是它没有抛出翻译错误。
答案 0 :(得分:0)
基本上有两种方法可以在Javascript中编写条件语句(不考虑三元组):
大括号:
if (condition) {
foo();
} else {
bar();
}
......或没有curlies:
if (condition)
foo();
else
bar();
然而,第二个选项只能用于单个语句,而不是更复杂的逻辑
如果没有else
,则第二个示例将用作
if (condition)
foo();
//Other code follows, regardless of how the condition resolves
console.log("This is always shown");
以上也是您的问题:
if(x=21)
342423
console.log('whats going on?')
您只是以不同方式缩进代码,可能会导致您的混淆
342423
是Javascript中的有效声明,就像foo()
一样,无论条件如何,都会导致console.log()
被执行。
缺少的分号由脚本解析器自动添加
另请注意,x = 21
,x == 21
和x === 21
在Javascript中是非常不同的东西,您可以在此网站的其他答案中查找它们。