我正在浏览一个 php 包,发现了一行有趣的代码,我想对它有所了解。与其将表达式传递到 for 循环参数中,不如只写两个分号。
for (;;) { // This is the line in question
$this->output .= $this->a;
$this->a = $this->get();
if ($this->a === $this->b) {
break;
}
if (ord($this->a) <= self::ORD_LF) {
throw new JSMinException('Unterminated string literal.');
}
if ($this->a === '\\') {
$this->output .= $this->a;
$this->a = $this->get();
}
}
我知道 for 循环通常包含 3 个用分号分隔的表达式。所以这显然只是运行一个没有表达式的 for 循环,并依靠一个 break(第 6 行)来退出循环。
我想知道的是,这种方法比传统方法有性能优势吗? 在我看来,这可以很容易地重写为 while 循环,如下所示:
while($this->a !== $this->b){
// Loop Contents
}