- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
据我所知,JavaScript 的EmptyStatement 语句有两个用例。它用于:
在需要语句的地方作为无操作(no-op)命令,以及
作为一种机制,确保在程序员省略语句末尾分号的情况下(在这种情况下,程序员在表示的行的开头插入分号(空语句))新语句,但以 (
、[
、/
、+
或 -
标记,以防止该行被解释为上一行(语句)的延续。)
我很想看到第一个用例的一些实际应用 - 使用空语句作为无操作命令。
我不记得曾经使用过分号作为空操作命令,但如果您使用过,或者记得其他人的代码使用过,您能说明它是如何使用的吗?
最佳答案
遍历到下一个元素节点,将所有逻辑放在为 while
计算的表达式中。
// ---------empty statement-------------------------------------v
while( node && (node = node.nextSibling) && node.nodeType !== 1 );
// do something with the resulting node
因为所有逻辑(以及赋值)都在被计算的表达式中,所以不需要语句,所以使用了一个空语句。
编辑: 有点偏离主题。
在快速阅读一堆代码时,这些类型的 while
语句有时会困扰我。
也许更好的形式是:
do;while( node && (node = node.nextSibling) && node.nodeType !== 1 )
...因此您可以在一开始就看到它正在使用 EmptyStatement,尽管从技术上讲它总是需要对语句进行 1 次额外处理。
有趣的是,this jsPerf一直给 do-while
一个非常小的优势(无论如何在 Chrome 13 和 Firefox 5 中)。出于实际目的,它们是相同的。
关于javascript - 空语句在 JavaScript 中作为空操作命令的实际应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6968543/
C# language specification定义了empty-statement 语法产生式,它允许我做这样的事情: static void Main(string[] args) {
由第1章已知,一个程序包含一个或多个程序单位(每个程序单位构成一个程序文件)。每一个程序单位由以下几个部分组成: 如果一个变量在函数之外进行声明,此变量是全局变量,它的有效范围是从该行开始到本程序
我是一名优秀的程序员,十分优秀!