Javascript decodeURIComponent不是一个函数
我正在尝试在React.js组件的componentWillMount()中使用此函数。但是浏览器说window.decodeURIComponent(…)不是一个函数,我不明白。有人能告诉我如何让它工作吗?谢谢Javascript decodeURIComponent不是一个函数,javascript,reactjs,Javascript,Reactjs,我正在尝试在React.js组件的componentWillMount()中使用此函数。但是浏览器说window.decodeURIComponent(…)不是一个函数,我不明白。有人能告诉我如何让它工作吗?谢谢 export const getUrlQuery = window => { let queryDict = {} if (window.location.search) { window.location.search.substr(1).split("&
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
}
在我删除了这部分代码之后,一切都正常了
(queryDict[key] = queryDict[key] || [])
看起来这个语法错误导致的不是decodeURIComponent(),而是叫喊。有趣的错误是,
let value=..
行被解析为
let value = s[1] && window.decodeURIComponent(s[1])(queryDict[key] = queryDict[key] || []) ..
换句话说,将括号内的表达式应用于window.decodeURIComponent(s[1])
的结果,该结果是字符串而不是函数。您可以使用显式分号来修复它(通常这不是一个坏主意):
UPD:看到代码在做什么,您可能会对npm包感兴趣。您是否将window传递到getUrlQuery函数中?是的,它是向下传递的,或者它应该在window.location.Search上报告undefined这就是为什么我们总是用分号终止每个语句的原因,孩子们。
let value = s[1] && window.decodeURIComponent(s[1]);