这两个if()语句之间有什么实际区别吗?

时间:2014-11-24 03:13:39

标签: actionscript-3 if-statement

这两组if语句之间是否存在任何实际(更快/更慢,功能等)差异?

1

var myVar:Boolean;
if (myVar == true)
{
    //do stuff
}
//waldo:
if (myVar == false)
{
    //do other stuff
}

2:

var myVar:Boolean;
if (myVar == true)
{
    //do stuff
}
//waldo:
else 
{
    //do other stuff
}

这特别是关于变量的if()语句的问题,这些变量只有两个可能的值(非null),如布尔变量。

2 个答案:

答案 0 :(得分:1)

  1. 这些示例在功能上并不相同。正如@Nicolas已经提到的,myVar可以在第一个块中更改,然后第二个if语句将为true。像这样:

    if (myVar == true)
    {
        //do stuff
        myVar = false;
    }
    if (myVar == false)
    {
        // now this will be executed
    }
    
  2. 在第二种情况下不会发生这种情况。

    1. 在第一个示例中,布尔值被检查两次(即两个if语句),但在第二个布尔值中只检查一次。这会带来轻微的性能优势。如果很少这样做会不会很多,但如果这段代码每秒执行很多次(例如,在数百个影片剪辑的内部输入帧事件中),那么这样的性能优势就变得至关重要。例如,如果每秒可以节省50毫秒,那么性能将提高5%。

    2. 在我看来,第二个例子更具可读性。

答案 1 :(得分:0)

主要区别在于,在第一个示例中,如果myVar的值在两个块之间变为false,则第二个语句仍将执行。在第二个示例中,即使myVar在第一个块完成后变为false,也不会执行else子句,因为已经执行了关联的if子句(其中只有一个将执行运行)。

就性能和代码质量而言,你通常会想要使用第二个例子(除非第一个例子的副作用是必要的)。