如何解决使用 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 在countTruthy?
为什么?
额外问题 - 无论我的 return 语句如何缩进,我都会得到相同的结果......但它应该在“if 语句”还是“for 循环”下?为什么?
解决方法
您似乎缺少一些作用域(即“{}”)。对于您当前的实现,for 语句只会执行 console.log
这就是为什么如果您删除它然后它会执行 if(item)...
并且一切正常
试试
for (let item of array) {
console.log(item);
if (item) {
numberCount++;
}
}
return numberCount;
需要注意的一件重要事情是 Javascript 不是一种“位置”语言,因此无论您如何缩进代码,它都会执行相同的代码,重要的是括号。
,这似乎是一个缩进问题。使用方括号关闭函数和 for 循环,如下所示:
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;
}
,
希望对你有用:
当您在“for”、任何循环或条件中不使用大括号“{}”时,该过程仅采用下一行。在您的情况下,如果您删除日志,该项目由“for”识别,但如果您在下一行添加日志,因为它没有键“{}”,“for”仅与下一行,该项目不再属于“for”,因此不再被识别,您必须在“for”之外声明它
const array = [1,2];
function countTruthy (array) {
let numberCount = 0;
for (let item of array)
{
console.log(item);
if (item) numberCount++;
}
return numberCount;
}
countTruthy(array);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。