JavaScript箭头功能上的奇怪未定义错误

时间:2018-11-22 09:19:08

标签: javascript react-native

我加入了一个本机反应项目,我意识到这里的CSS有所不同,但我认为javascript也有所不同。因为在以下代码上出现错误:

const makeVal = arr =>
  arr
    .filter( i => i.checked )
    .map ( i => i.label )
    .join(', ');

有时此功能会出现以下错误:

  

未捕获的TypeError:无法读取未定义的属性'filter'

我找不到它,我们的领导告诉我这是你的错吗?但是我认为后端团队在API中传递数据是错误的。

如何编写不会出错的函数?

1 个答案:

答案 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呼叫站点,并确保传递给此函数的数据正确。