空语句的实际应用程序作为JavaScript中的无操作命令

时间:2011-08-06 17:46:26

标签: javascript

据我所知,JavaScript的 EmptyStatement 语句有两个用例。它用于:

  1. 在需要声明的地方作为无操作(无操作)命令,

  2. 作为一种机制,确保在程序员从语句末尾省略分号的情况下将代码解释为预期(在这种情况下,程序员在表示行的行的开头插入分号(空语句))新语句,但以([/+-标记开头,以防止该行被解释为延续前一行(声明)。)

  3. 我很想看到第一个用例的一些真实应用 - 使用空语句作为no-op命令。

    我不记得曾经使用分号作为无操作命令,但是如果你这样做,或者记住别人的代码,你能说明它是如何被使用的吗?

6 个答案:

答案 0 :(得分:4)

遍历到下一个元素节点,将所有逻辑放在为while评估的表达式中。

 // ---------empty statement-------------------------------------v
while( node && (node = node.nextSibling) && node.nodeType !== 1 );

// do something with the resulting node

因为所有逻辑(以及赋值)都在被评估的表达式中,所以不需要 Statement ,因此使用空的。


编辑: 关闭主题。

在快速阅读大量代码时,这些类型的while语句有时会让我感到困扰。

也许更好的形式是:

do;while( node && (node = node.nextSibling) && node.nodeType !== 1 )

...所以你可以在开始时看到它正在使用 EmptyStatement ,虽然从技术上讲它总是需要对语句进行一次额外的处理。


有趣的是,this jsPerf始终给do-while带来了微不足道的优势(无论如何,在Chrome 13和Firefox 5中)。出于实际目的,它们是相同的。

答案 1 :(得分:3)

我有时会写这样的代码:

if( somecondition )
  doSomething();
else if( anothercondition )
  doSomethingElse();
else if( thirdcondition )
  ; // we don't need to do anything in this case
else if( fourthcondition )
  goFourthAndMultiply();
else
  panic();

当然,在这些情况下,使用;还是{}只是一种风格选择。

答案 2 :(得分:0)

我能想到的一个例子,如果由于某种原因你想转换以下内容:

if(a) {
    if(b) {
       B()
    } else {
       C()
    }
}

使用三元运算符:

a ? (b ? B() : C()) : emptystatement;

这是您陈述的第一个案例的例子。

答案 3 :(得分:0)

如果您创建了一个不应导航的超链接,您可以执行以下操作:

<a href="javascript:;" onclick="...">Click here</a>

这有点老式,但它(或者更确切地说)是它的一个用例。

答案 4 :(得分:0)

try {
  some code
} catch(Exception) {;}

for(var i = 0, len = array.length; i < len; SomFunction(i++));

if (condition) return; else ;

答案 5 :(得分:0)

也许它对你有用(C例):

for ( ;; ) {

}

或者这个:

for(var i = 0, len = array.length; i < len; SomFunction(i++));