js排序,在执行之前打印出的结果是执行后的结果

function compare(property){

    return function(a,b){
        var value1 = a[property];
        var value2 = b[property];
        return value1 - value2;
    }
}
let obj1=[{num:3},{num:2},{num:5}];

console.log(obj1);

let obj2=obj1.sort(compare("num"));

console.log(obj1)
我觉得第一次打印结果应该是3 2 5,执行排序之后 ,第二次打印 应该是2 3 5  
。但是结果如下:

clipboard.png
一脸懵逼0.0 有没有大神可以指点一下?

阅读 2.3k
3 个回答

控制台打印的是动态的,你打的是引用类型,你看的时候已经排序完了,当然是排序后的结果,你排序前debugger一下或者JSON.parse(JSON.stringify(data))输出你排序前的结果就对了

你的obj1是引用类型的,去看看值类型和引用类型的区别吧

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