我加入了一个本机反应项目,我意识到这里的CSS有所不同,但我认为javascript也有所不同。因为在以下代码上出现错误:
const makeVal = arr =>
arr
.filter( i => i.checked )
.map ( i => i.label )
.join(', ');
有时此功能会出现以下错误:
未捕获的TypeError:无法读取未定义的属性'filter'
我找不到它,我们的领导告诉我这是你的错吗?但是我认为后端团队在API中传递数据是错误的。
如何编写不会出错的函数?
答案 0 :(得分:2)
未捕获的TypeError:无法读取未定义的属性'filter'
您应该确保arr
属性是实际定义的,并且是array
类型。在某些情况下,传递给arr
函数的makeVal
似乎是未定义的,因此没有filter
方法。您可以尝试这样的事情:
const makeVal = arr => {
if (typeof arr === 'undefined' || ! Array.isArray(arr)) {
// "arr" is wrong, error handling
} else {
return arr
.filter( i => i.checked )
.map ( i => i.label )
.join(', ');
}
}
此外,您可能要检查arr
元素是否实际上包含“ checked”和“ label”字段,但这是另一回事。或者,您可以检查makeVal
呼叫站点,并确保传递给此函数的数据正确。