尽管返回了一个对象,但期望在箭头函数中返回一个值

时间:2018-07-13 10:20:46

标签: javascript ecmascript-6 eslint

eslint怎么了?这是假阳性吗?

const URLParams = search => {
  let hashes = search.slice(search.indexOf('?') + 1).split('&')
  let params = {}
  hashes.map(hash => {
      let [key, val] = hash.split('=')
      params[key] = decodeURIComponent(val)
  })

  return params
}

1 个答案:

答案 0 :(得分:1)

不,这不是误报。这是一个误导性的错误消息,但这不是map的正确用法。

map希望您从回调函数返回一些信息。如果您没有建立新的阵列,则不需要map。如果您在使用箭头功能时未从回调中返回任何值,则ESLint假定您正在犯箭头功能的常见错误之一:在意味对象时使用块。

您可以在此处使用forEach

hashes.forEach(hash => {
  let [key, val] = hash.split('=')
  params[key] = decodeURIComponent(val)
})

或者,我认为这是更可取的,只需使用普通循环即可:

for (let hash of hashes) {
  let [key, val] = hash.split('=')
  params[key] = decodeURIComponent(val)
}