javascript - js数组问题
本文介绍了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屋!
查看全文