JS代码报Uncaught TypeError: Cannot read property 'forEach' of undefined是什么原因?
报错原因
forEach 是仅数组类型支持的遍历方法,只有调用主体是数组时才能正常执行。你代码中调用 forEach 的主体是 btn.projectTechnologies,而你刚通过 document.createElement('li') 创建的原生DOM元素本身不存在 projectTechnologies 这个自定义属性,所以 btn.projectTechnologies 取值为 undefined,用非数组类型调用 forEach 就会触发该报错。
另外你的代码还存在多个逻辑错误:
- 重复声明
btn变量,会出现变量覆盖问题 - 未定义
techItem、projectTechnologies变量就直接调用,会触发新的未定义报错 - 直接把整个技术栈数组赋值给li的文本,没有取当前遍历的单项值
修复方法
你的需求应为遍历project对象下的projectTechnologies技术栈数组,为每一项生成li元素插入到已创建的.lang-project列表容器中,修复后代码如下:
const langProject = document.createElement('ul'); langProject.classList.add('lang-project'); projectCardContent.appendChild(langProject); // 遍历project下的技术栈数组,注意调用forEach的主体是数组 project.projectTechnologies.forEach((btnTech) => { const techItem = document.createElement('li'); // 取当前遍历到的单项值赋值给文本 techItem.innerText = btnTech; // 插入到之前创建的ul容器中 langProject.appendChild(techItem); });
内容的提问来源于stack exchange,提问作者Dare Akintoye
相关产品推荐
相关产品推荐

