两次console.log打印值不同

 1         var a=[1,2,3]
 2         console.log(a);
 3         a[2]=10;
 4         console.log(a);
 5         // 打印结果
 6         // (3) [1, 2, 3]
 7         // (3) [1, 2, 10]
 8 
 9         // 点击小箭头展开
10         // (3) [1, 2, 3]
11         // 0: 1
12         // 1: 2
13         // 2: 10
14         // length: 3
15         // __proto__: Array(0)
16 
17         // (3) [1, 2, 10]
18         // 0: 1
19         // 1: 2
20         // 2: 10
21         // length: 
22         // 3__proto__: Array(0)

因为当你在Chrome Console点击展开数组时,会重新去读一遍内存真实的值然后显示,一但展开后就不会再变。

chrome的console打印对象的时候,查看值是点击展开时再详细获取的,整个流程:

  1. 空对象声明

  2. 执行console,chrome打印对象,传递的是对象的引用

  3. FileReader完成,赋值data给对象

  4. 你在console中,点击展开值,通过对象引用,获取到对象的详细值

你可以看到截图Object {} [i]这里有个[i]的图标,有对应的对象console说明:value below was evaluated just now

console的其他用法

1.console.log占位符

console.log("%d年%d月%d日",2011,3,26);

打印结果为2011年3月26日

2.console.group 信息分组

    //组之间嵌套 group1包含group2
    console.group('group1')
    console.log('member1')
    console.log('member2')  
    console.group('group2')
    console.log('member3')
    console.log('member4')
    
    //添加end 组1与组2并列
    console.group("第一组信息");        
    console.log('member1')
    console.log('member2')
    console.groupEnd();
    console.group("第二组信息");
    console.log('member3')
    console.log('member4')
    console.groupEnd();

3.console.dir()显示一个对象所有的属性和方法。

原文地址:https://www.cnblogs.com/zjx304/p/9783339.html