运行 调试器控制台中的 es6

Running es6 in debugger console

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

'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);

我认为你漏掉了行尾的分号:

userMap.set("1", {id: 200});
userMap.set("2", {id: 301});
userMap.set("3", {id: 102});