decodeURIComponent不是一个函数

tho*_*ght 1 javascript reactjs

我试图在我的React.js组件的componentWillMount()中使用此函数.但是浏览器说window.decodeURIComponent(...)不是一个函数,我不明白.任何人都可以告诉我如何让它工作?谢谢

export const getUrlQuery = window => {
  let queryDict = {}
  if (window.location.search) {
    window.location.search.substr(1).split("&").forEach((item) => {
      let s = item.split("=")
      let key = s[0]
      let value = s[1] && window.decodeURIComponent(s[1])
      (queryDict[key] = queryDict[key] || []).push(value)
    })
  }
  return queryDict
}
Run Code Online (Sandbox Code Playgroud)

Obl*_*sys 5

有趣的错误,事实证明该let value = ..行被解析为

let value = s[1] && window.decodeURIComponent(s[1])(queryDict[key] = queryDict[key] || []) ..
Run Code Online (Sandbox Code Playgroud)

换句话说,您将括号表达式应用于结果window.decodeURIComponent(s[1]),即字符串而不是函数.你可以用一个明确的分号来修复它(一般来说这不是一个坏主意):

let value = s[1] && window.decodeURIComponent(s[1]);
Run Code Online (Sandbox Code Playgroud)

UPD:看看代码在做什么,你可能会对qs npm包感兴趣.