javascript - 使用 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 循环”下?为什么?
解决方案
您似乎缺少一些范围界定(即“{ }”)。使用您当前的实现, for 语句只会执行,console.log
这就是为什么如果您删除它,那么它会执行if(item)...
并且所有工作
尝试
for (let item of array) {
console.log(item);
if (item) {
numberCount++;
}
}
return numberCount;
需要注意的重要一点是 Javascript 不是一种“位置”语言,因此无论您如何缩进代码,它都会执行相同的操作,重要的是括号。
推荐阅读
- vue.js - Vue: filter an array of objects doesn't work properly
- eclipse - Prevent Eclipse from collapsing a path in project explorer that I manually opened?
- javascript - How can I combine multiple scroll event listeners into one?
- javascript - 正则表达式测试不适用于数字
- docker - 在运行 HornetQ 的两个 Docker 容器之间共享数据文件
- javascript - 如何使用正交相机在 THREE.js 中找到呈现在屏幕上的对象的宽度和高度
- javascript - ajax调用成功后将ajax响应数据传递到另一个页面
- vue.js - 折叠所有列表并仅展开 vuetify 中的选定列表
- python - 原始图像 Python 4 尺寸
- sql - SQL 中按 WEEK 分组的 SELECT 数据