据我所知,JavaScript的 EmptyStatement 语句有两个用例。它用于:
在需要声明的地方作为无操作(无操作)命令,
作为一种机制,确保在程序员从语句末尾省略分号的情况下将代码解释为预期(在这种情况下,程序员在表示行的行的开头插入分号(空语句))新语句,但以(
,[
,/
,+
或-
标记开头,以防止该行被解释为延续前一行(声明)。)
我很想看到第一个用例的一些真实应用 - 使用空语句作为no-op命令。
我不记得曾经使用分号作为无操作命令,但是如果你这样做,或者记住别人的代码,你能说明它是如何被使用的吗?
答案 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++));