JavaScript
es6

JavaScriptで秒を数えるいくつかの方法

普通の書き方

let i = 0;
const update = () => {
  console.log(i);
  i++;
}
setInterval(update, 1000);

再帰関数

const update = (i = 0) => {
  console.log(i);
  return setTimeout(() => update(i + 1), 1000);
};
update();

クロージャー

const update = () => {
  let i = 0;
  return () => console.log(i++);
};
setInterval(update(), 1000);

短く書くと

const update = (i = 0) => () => console.log(i++);
setInterval(update(), 1000);

Promise

(async() => {
  for (let i = 0; true; i++) {
    await new Promise(res => setTimeout(res, 1000));
    console.log(i);
  }
})();