I believe similar questions have been posted before, but I don't entirely understand why using a callback function as a While loop statement, such as seen below, results in an infinite loop:
do {
console.log["repeat"];
} while[myFunc];
function myFunc[]{
return false;
}
This version, on the other hand, prints "repeat" once and then stops:
do {
console.log["repeat"];
} while[myFunc === false];
Why is that?
asked Jan 5, 2021 at 20:18
emilyemily
7712 bronze badges
2
myFunc
is a variable [all functions in JS are object variables], and it's not equal to false
.
myFunc[]
on the other hand, is the results of myFunct
being called, and is equal to false
.
So you should compare the result of the function, not the function itself, by calling it:
do {
console.log["repeat"];
} while[myFunc[] === false];
Kelderic
6,2588 gold badges44 silver badges82 bronze badges
answered Jan 5, 2021 at 20:28
paroxyzmparoxyzm
1,2531 gold badge12 silver badges26 bronze badges
2
Abosolutely agree with the comment, the condition you are checking is always truthy, be myFunc is a pointer to and Object Function.
You must invoke to get out of infinite loop
answered Jan 5, 2021 at 20:31
1. Loop
Loop/Iteration adalah tindakan mengulang / merepetisi sebuah proses, dengan tujuan untuk mendapatkan deret hasil, atau dengan tujuan mendapatkan hasil tertentu dengan repetisi. Setiap proses repetisi ini disebut sebagai Iteration atau Looping.
Untuk melakukan looping/iteration, JavaScript menyediakan beberapa jenis iteration, yaitu:
- while-loop
- for-loop
While-loop
While-loop adalah iterasi yang akan mengulang sebuah proses dengan sebuah kondisi tertentu.
Berikut adalah cara atau struktur penulisan while-loop:
while[[Kondisi]] { // Kondisi yang menentukan apakah program akan melakukan iterasi. // Berupa boolean atau true/false. [Proses] // Merupakan proses yang akan dijalankan dalam satu iterasi }
Pada while-loop, statement while
akan mengambil sebuah nilai true
atau false
dari hasil kondisi yang diberikan. Apabila statement while
mendapatkan nilai true
, maka proses yang berada didalam curly bracket [{ }
] akan dijalankan. Looping akan terus dilakukan selama kondisi while-loop masih true
.
Untuk mencegah
looping berjalan terus-menerus, dilakukan sebuah proses yang akan mengubah kondisi yang sedemikian rupa yang bertujuan untuk menghentikan looping dengan menghasilkan kondisi yang false
.
Contoh Looping While-loop 1 Looping Angka 1-9 Sederhana
var flag = 1; while[flag < 10] { // Loop akan terus berjalan selama nilai flag masih dibawah 10 console.log['Iterasi ke-' + flag]; // Menampilkan nilai flag pada iterasi tertentu flag++; // Mengubah nilai flag dengan menambahkan 1 }
Kamu bisa mencoba kode di atas di sini
Contoh Looping While-loop 2 Looping Mengembalikan Angka Total
var deret = 5; var jumlah = 0; while[deret > 0] { // Loop akan terus berjalan selama nilai deret masih di atas 0 jumlah += deret; // Menambahkan nilai variable jumlah dengan angka deret deret--; // Mengubah nilai deret dengan mengurangi 1 console.log['Jumlah saat ini: ' + jumlah] } console.log[jumlah];
Kamu bisa mencoba kode di atas di sini
For-loop
For-loop adalah bentuk lain dari iterasi, dimana statement for
menjadi kontrol atas loop yang dilakukan. Hal ini yang menjadi pembeda antara for-loop dengan while-loop.
Berikut adalah cara atau struktur penulisan for-loop:
for[[Inisialisasi], [Kondisi], [Incremental/Decremental]] { [Proses] // Merupakan proses yang akan dijalankan dalam satu iterasi }
Pada for-loop, statement for
akan menampung tiga
parameter, yaitu sebut saja inisialisasi, kondisi, dan incremental/decremental. Ketiga parameter ini akan menjadi kontrol kapan loop ini harus berhenti. Pada parameter pertama, yaitu inisialisasi, sebuah variable diberikan nilai awal atau default. Pada parameter kedua, yaitu kondisi, for-loop akan terus berjalan selama kondisi ini masih terpenuhi, dengan kata lain, mengandung nilai true
. Pada parameter kedua, yaitu incremental/decremental, variabel yang menjadi kontrol terhadap loop ini akan
diubah nilainya.
Best Practice: Walaupun memang for-loop dapat mengubah kondisi di dalam proses, namun best practice dari penggunaan for-loop adalah seluruh kendali atau kontrol dari looping ditentukan oleh variable yang diinisialisasi, di increment/decrement, dan juga kondisi for-loop pun menggunakan variable tersebut.
Untuk memudahkan kamu mendapatkan gambaran jelas tentang penggunaan for-loop, mari kita gunakan kedua contoh while-loop dan kita tulis ulang dalam bentuk for-loop.
Contoh Looping For-loop 1 Looping Angka 1-9 Sederhana
for[var angka = 1; angka < 10; angka++] { console.log['Iterasi ke-' + angka]; }
Kamu bisa mencoba kode di atas di sini
Contoh Looping For-loop 2 Looping Mengembalikan Angka Total
var jumlah = 0; for[var deret = 5; deret > 0; deret--] { jumlah += deret; console.log['Jumlah saat ini: ' + jumlah]; } console.log['Jumlah terakhir: ' + jumlah];
Kamu bisa mencoba kode di atas di sini
Contoh Looping For-loop 3 Looping Dengan Increment dan Decrement Lebih dari 1
for[var deret = 0; deret < 10; deret += 2] { console.log['Iterasi dengan Increment counter 2: ' + deret]; } console.log['-------------------------------']; for[var deret = 15; deret > 0; deret -= 3] { console.log['Iterasi dengan Decrement counter : ' + deret]; }
Kamu bisa mencoba kode di atas di repl.it.
Waspadai Infinite Looping!
Dengan sengaja atau tidak sengaja, kode kamu mungkin dapat menghasilkan infinite looping, atau looping yang tidak akan pernah berhenti. Bila ini terjadi, segera periksa statement kondisi kamu.
var flag = 1; while[flag < 10] { // Loop akan terus berjalan, karena nilai flag tidak pernah berubah console.log['Iterasi ke-' + flag]; }
Sumber: github hacktiv8 phase 0 materials
Function adalah sebuah blok kode yang disusun sedemikian rupa untuk menjalankan sebuah tindakan. Blok kode ini dibuat untuk dapat bisa digunakan kembali. Cara atau bentuk penulisan function adalah sebagai berikut:
function nama_function[parameter 1, parameter 2, ...] { [Isi dari function berupa tindakan] return [expression]; }
Kode di atas tidak dapat kita copy-paste kan langsung, melainkan
hanya sebuah bentuk penulisan function
. Sebuah function
, umumnya melakukan tindakan dan sebelum function
berakhir, function
bisa mengembalikan nilai dengan cara menambahkan sintaks return.
Kita juga dapat mengirimkan nilai ke dalam sebuah function
dengan mencantumkannya ke dalam tanda kurung dalam penulisan function
. Untuk mengirimkan nilai lebih dari satu, gunakan tanda ,
sebagai pemisah.
Contoh Function 1: Function sederhana tanpa return
function tampilkan[] { console.log["halo!"]; } tampilkan[];
Contoh Function 2: Function sederhana dengan return
function munculkanAngkaDua[] { return 2 } var tampung = munculkanAngkaDua[]; console.log[tampung]
Contoh Function 3: Function dengan parameter
function kalikanDua[angka] { return angka * 2 } var tampung = kalikanDua[2]; console.log[tampung]
Contoh Function 4: Pengiriman parameter lebih dari satu
function tampilkanAngka[angkaPertama, angkaKedua] { return angkaPertama + angkaKedua } console.log[tampilkanAngka[5, 3]]
Contoh Function 5: Inisialisasi parameter dengan nilai default
function tampilkanAngka[angka = 1] { return angka } console.log[tampilkanAngka[5]] // 5, sesuai dengan nilai parameter yang dikirim console.log[tampilkanAngka[]] // 1, karena default dari parameter adalah 1
Waspadai pengiriman parameter yang UNDEFINED!
Kita juga dapat menampung function sebagai variable dengan sebuah bentuk function yang dinamakan Anonymous Function.
var fungsiPerkalian = function[angkaPertama, angkaKedua] { return angkaPertama * angkaKedua } console.log[fungsiPerkalian[2, 4]]
Sumber: github hacktiv8 phase 0 materials