kembali ke pelajaran

Setel dan kurangi penghitung

Modifikasi kode dari makeCounter() jadi penghitungnya juga bisa mengurangi dan menyetel ulang angkanya:

  • counter() harus mengembalikan angka selanjutnya (seperti sebelumnya).
  • counter.set(value) harus menyetel ulang penghitungnya jadi value.
  • counter.decrease() harus mengurangi angka penghitungnya dengan 1.

Lihat kode pada sandbox untuk contoh penggunaan yang lengkap.

Catatan. Kamu bisa menggunakan closure atau properti fungsi untuk menyimpan perhitungan yang sekarang. Atau tulis kedua variannya.

Buka sandbox dengan tes.

Solusinya adalah menggunakan count didalam variabel lokal, tapi metode tambahan ditulis tepat didalam counternya. Mereka membagi lingkungan leksikan luar yang sama dan juga bisa mengakses count yang sekarang.

function makeCounter() {
  let count = 0;

  function counter() {
    return count++;
  }

  counter.set = value => count = value;

  counter.decrease = () => count--;

  return counter;
}

Buka solusi dengan tes di sandbox.