刚刚看到一行代码:a && b && c
。我认为这应该相当于 if(a && b) {c}
。但我真的很好奇这些代码是否有任何性能差异,或者只是将其放在一行中很酷?
这是实际代码:sourcesPanel &&sourcesPanel.tips &&sourcesPanel.tips.clearTimers()
sourcesPanel
和 sourcesPanel.tips
是程序中的两个对象。
基本上,我认为它正在检查这两个对象是否存在,如果存在,则调用该 clearTimers
函数。
最佳答案
JS 中的逻辑运算符有一个非常重要的行为:它们返回第一个最终失败或成功的操作数。如果没有。
if (a) { if (b) { ...
的行为非常简单:如果他们是真的,就进入区 block 。
&&
的行为不同的是:
foo = 1 && 2 && 3; // foo = 3, succeeds all the way through
foo = 1 && 0 && 3; // foo = 0, failed at 0
foo = 1 && null && 3; // foo = null, failed at null
当逻辑运算符在 if
内使用时 ,行为似乎完全相同。单独使用或与作业一起使用时,它们的行为方式相对出人意料。
使用||
提供默认值:
opt = opt || {foo: bar};
如果opt
是 true (对于对象,存在)使用它,否则使用默认值。其他逻辑运算符的行为方式相同。
关于javascript - a && b && c VS if - 性能上有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30265468/