I'm reading a code snippet,

```
function* powers(n) {
   for (let current = n;; current *= n) {
     yield current;
   }
}

```

Why there is no checking condition in the for loop (see two `;;`)? 

Seems the code will continue to run like a `while` true loop. Why not using a `while` instead doing this. It makes code hard to read anyway.