首页 > 解决方案 > 使用 console.log 打印后未定义数组元素??似乎只有在我删除该行之后才定义..?(Javascript)

问题描述

我想在下面的数组中返回真实值的数量。

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;

但这仅在我删除此行后才有效。

console.log(item)

否则我得到: Uncaught ReferenceError: item is not defined at countTruthy?

为什么?

额外的问题 - 无论我的 return 语句如何缩进,我都会得到相同的结果......但它应该在“if 语句”还是“for 循环”下?为什么?

标签: javascriptarraysreturnconsole.log

解决方案


您似乎缺少一些范围界定(即“{ }”)。使用您当前的实现, for 语句只会执行,console.log这就是为什么如果您删除它,那么它会执行if(item)...并且所有工作

尝试

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

需要注意的重要一点是 Javascript 不是一种“位置”语言,因此无论您如何缩进代码,它都会执行相同的操作,重要的是括号。


推荐阅读