javascript - js数组问题

查看:94
本文介绍了javascript - js数组问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

这是我的代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    
    <script>
        
    var colors = ['red','blue'];
    var count = colors.push('green');
    console.log(count);
    console.log(colors);
    console.log(colors.length);
    var item = colors.shift();

    </script>

</body>
</html>

这是打印结果


这里有个疑问是数组明明打印出来的是red,blue,green,但把数组展开,为什么只有0: blue 1: green length: 2
但后面的数组长度却打印出3 这是什么问题

解决方案

这个问题在于浏览器中所实现的console.log的特性。

以前的时候,就有一个疑问,console.log是异步的吗?当时有一个常用的例子,和题主的有异曲同工之妙:

var obj = {};
console.log(obj);
obj.foo = 'bar';

在过去的有一段时间里,webkit浏览器的console.log是异步的,因此上面的代码会在控制台返回 {foo: bar}。而如今的浏览器,比如最新的chrome,上面的代码只会看到一个空的Object{},但点击查看详情(展开)的话,又会看到{foo:bar},这是因为,console.log在代码执行的时候是立即拍摄了一个对象快照,但留在控制台的链接,却是一个指向对象的引用,因此如果点击了链接,将返回该引用对象的最新状态。

这篇关于javascript - js数组问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆