在调试器控制台中运行 es6

当我在页面上打开调试器控制台时,我运行:


'use strict'

const userMap = new Map();

userMap.set("1", {id: 200})

userMap.set("2", {id: 301})

userMap.set("3", {id: 102})

[...userMap].sort((a, b)=> {

  console.log(a[1], b[1])

  return a[1] - b[1]

})

..


我会得到一个错误:


Uncaught SyntaxError: Unexpected token ...


现在,当我使用丑陋的 setTimeout() 时:


'use strict'

const userMap = new Map();

userMap.set("1", {id: 200})

userMap.set("2", {id: 301})

userMap.set("3", {id: 102})

setTimeout(() => {

    [...userMap].sort((a, b)=> {

      console.log(a[1], b[1])

      return a[1] - b[1]

    })

})

现在错误不存在..


我只是想知道为什么会发生这种情况?


更新,这对我有用


'use strict'

const userMap = new Map();

userMap.set("1", {id: 100});

userMap.set("2", {id: 300});

userMap.set("3", {id: 111});

const sortBy = (sortMap, name) => {

  return [...sortMap.values()].sort((a, b)=> {

    return a[name] - b[name];

  });

};

const sorted = sortBy(userMap, "id");

console.log(sorted);


拉丁的传说
浏览 197回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript