console.log显示空对象的属性

时间:2020-07-17 15:23:12

标签: javascript reactjs

我正在编写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可以在“空”对象上显示属性?

0 个答案:

没有答案