求大佬帮忙看看这个“东西”到底是什么

新手上路,请多包涵

图片描述

图片描述

如图,这个好像是个伪数组,但我打印他的length的时候却是显示0,用instanceof打印出既不是数组也不是对象了,我想拿这个“东西”里面的对象,却拿不出来,大佬们帮帮忙

阅读 2.2k
4 个回答

你这个是异步获取的吧, 这个值暂时还没有你当然取不到, 你可以写个延时器 去执行取值

没有代码看不出什么呀。。 首先你使用的console.log是由浏览器来实现的,不同浏览器打印出来的信息可能行为是不一致的。也就是说你现在看到的值可能是之后异步更新的值。

那么你先使用console.log(JSON.parse(JSON.stringify(newArr))), 打印出真实的值出来。

数组本质上也是一个对象来着,我看__proto__Array, 你再使用Array.isArray(newArr)来判断是否是真的Array。

再或者说,这个值总更该有原始类型的吧,调用这个函数来获取原始类型:

function getBaseType(target) {
    const typeStr = Object.prototype.toString
        .call(target)
        .toLocaleLowerCase();

    return typeStr.slice(8, -1);
}

就是普通json数组,长度都写了是2,怎么可能拿不出? JSON.stringify(newArr[0])就拿到字符串了,你console.log(newArr[0])也是能打印出来的

其实你的场景可以理解为如下。其实问题很简单,console.log打印出来只是一个快照,你点击的时候才去内存中取值。其实你打印的时候就是没值的呀。

clipboard.png

newArr = []
console.log(newArr)
console.log(newArr instanceof Array)
console.log(newArr[0])
newArr[0] = 'lilnong.top';
console.log(newArr)

另一个问题,为什么instanceoffalse,因为你做了隐式转换了呀。其实可以用console.log输出多个参数

clipboard.png

clipboard.png


贴一个运算符优先级吧,可以看到先加,后instanceof

clipboard.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题