我正在编写react,并且在我的一个模块中具有以下功能
export function fromURLQuery(str) {
console.log('fromURLQuery BEGIN', str)
let ret = {}
if (!str) {
console.log('fromURLQuery return empty', ret)
return ret
}
if (str[0] === '?') str = str.slice(1, str.length)
let vars = str.split('&')
for (let i = 0; i < vars.length; i++) {
let pair = vars[i].split('=')
ret[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1])
console.log('fromURLQuery', pair)
}
console.log('fromURLQuery return', ret)
return ret
}
它会像这样在我的应用程序的不同部分中执行
let urlQuery = fromURLQuery(this.props.history.location.search)
控制台中的输出为
fromURLQuery BEGIN
====================================
fromURLQuery return empty
Object{
| <prototype>: Object { … }
}
====================================
fromURLQuery BEGIN
====================================
fromURLQuery return empty
Object {
| item: undefined
| <prototype>: Object { … }
}
基本上,在第二次调用函数return ret
时,返回非空对象(带有item: undefined
),该对象应为空。左右之间有很多逻辑。我真的不知道在哪里看。在Firefox和Chrome中,此行为是一致的。尝试(value.hasOwnProperty('item')
返回false
),因此它仅显示在控制台中。为什么console.log
可以在“空”对象上显示属性?