Javascript 若否,&||

Javascript 若否,&||,javascript,c++,if-statement,Javascript,C++,If Statement,使用if-else或&&和| |运算符进行编码是否有区别 例如,我可以用if-else风格编写此代码 for( var i = 0; i < 1000000000; i ++ ) { if( i % 2 == 0 ) { f1(); } else { f2(); } } 我在JS中测试过,它们同时工作,但我没有在C++上测试。也许这取决于编译器或语言 有速度差吗?或者有什么区别 谢谢 它可能是相同的,但是有一件事你可能要考虑的是可读

使用if-else或&&和| |运算符进行编码是否有区别

例如,我可以用if-else风格编写此代码

for( var i = 0; i < 1000000000; i ++ ) {
    if( i % 2 == 0 ) {
        f1();
    } else {
        f2();
    }
}

我在JS中测试过,它们同时工作,但我没有在C++上测试。也许这取决于编译器或语言

有速度差吗?或者有什么区别


谢谢

它可能是相同的,但是有一件事你可能要考虑的是可读性。你代码的第一个实例可读性很强,而第二个实例让我想拿支笔和纸来做数学题。速度和可读性是权衡的,除非您的程序在性能方面严重瓶颈,否则可读性是更好的目标。

您显然更习惯于
if
方法,因为在备选方法中有许多冗余括号

除非性能有很大差异(本例中没有),否则以50%的能力进行编程,以便可以100%进行调试


也就是说,采用你更满意、更具可读性的方法。

此表达式的问题是

(test1() || true)
例如,函数
test1
可以返回type
void
或类型为未隐式转换为type
bool
的对象,例如,类类型的对象没有适当的转换运算符

这个记录只会让代码的读者感到困惑

在编程中有这样一个原则——保持简单,愚蠢。:)

从第一个代码片段可以看出,程序员的意图是调用其中一个函数

看第二段代码,程序员似乎要计算一个复合逻辑表达式。所以这个代码片段只会引起一些问题

如果编写表达式,则可读性更高

i % 2 == 0 ? ( void )test1() : ( void )test2();
当然,在JavaScript中,您可以编写表达式,而无需使用
void

i % 2 == 0 ? test1() : test2();

<>这是对C++的要求。< /p>为什么代码不能读取?可读性是一个相当明显的差别。而且,在C++中,不要忘记<代码>?代码>运算符。我怀疑在这两种情况下,编译器输出的优化机器代码都不会有太大差别。@Rhymoid您指的是什么运算符?我只是简单地指出了它的名字,因为搜索“?:”是不起作用的。换句话说,编程使你即使喝了一半也能理解它。或者当你喝醉时编程,当你清醒时调试;-)@tadman这两个操作数都应计算为一个公共类型。@tadman通常,函数可以有不同的类型。因此,对无法转换为公共类型的操作数使用条件运算符是无效的。@tadman忽略结果并不重要。在任何情况下,编译器都需要确定操作数的公共类型以确定表达式的类型。。我以前从来没有注意到,但我从来没有混合过这样的类型,当涉及到三元时,它通常由设计匹配。如果操作数是混合的,您将得到一个“error:operans to?:have different type”。
i % 2 == 0 ? test1() : test2();