Saya ingin mengembalikan jumlah nilai kebenaran dalam array di bawah ini.

const array = [1,2,3,'',2];

function countTruthy (array) {


let numberCount = 0;

for (let item of array) 

    console.log(item)

    if (item) numberCount++;

    return numberCount;

Tapi ini hanya berfungsi setelah saya menghapus baris ini.

console.log(item)

Kalau tidak, saya mendapatkan: Uncaught ReferenceError: item tidak didefinisikan di countTruthy?

Mengapa?

Pertanyaan bonus - Tidak peduli bagaimana pernyataan pengembalian saya diindentasi, saya mendapatkan hasil yang sama kembali ... tetapi haruskah itu berada di bawah "pernyataan if" atau "for loop"? Mengapa?

0
unigorn 8 Januari 2021, 23:33

3 jawaban

Jawaban Terbaik

Saya harap ini akan bermanfaat bagi Anda:

Bila Anda tidak menggunakan kurung kurawal '{}' di "untuk", loop atau kondisi apa pun, hanya baris berikutnya yang diambil untuk proses itu. Dalam kasus Anda, jika Anda menghapus log, item dikenali oleh "untuk", tetapi jika Anda menambahkan log di baris berikutnya, karena tidak memiliki kunci "{}", "untuk" hanya beroperasi dengan baris berikutnya dan item tidak lagi menjadi milik "untuk" sehingga tidak lagi dikenali dan Anda harus mendeklarasikannya di luar "untuk"

const array = [1,2,3,'',2];

function countTruthy (array) {

  let numberCount = 0;

    for (let item of array) 
    {
      console.log(item);
      if (item) numberCount++;
    }
    return numberCount;
}

countTruthy(array);
0
Luis Angel Pena Zuniga 8 Januari 2021, 20:49

Tampaknya Anda kehilangan beberapa pelingkupan (mis. "{ }"). Dengan implementasi Anda saat ini, pernyataan for hanya akan mengeksekusi console.log itu sebabnya jika Anda menghapusnya maka itu akan mengeksekusi if(item)... dan semuanya berfungsi

Mencoba

for (let item of array) {
  console.log(item);
  if (item) {
    numberCount++;
  }
}
return numberCount;

Satu hal penting yang perlu diperhatikan adalah bahwa Javascript bukan bahasa "posisional", jadi tidak peduli bagaimana Anda membuat indentasi kode, itu akan dieksekusi sama, yang penting adalah tanda kurung.

2
Jaime 8 Januari 2021, 20:38

Tampaknya menjadi masalah indentasi. Gunakan tanda kurung untuk menutup fungsi dan untuk loop seperti ini:

const array = [1,2,3,'',2];

function countTruthy (array) {

  let numberCount = 0;

  for (let item of array) {
    console.log(item)

    if (item) numberCount++;

  }
  return numberCount;
}
0
Guilherme Schaidhauer Castro 8 Januari 2021, 20:39