考虑下面的这三句代码和对应的报错信息: 假设写这个代码的人一开始不知道 ES6 里新增的构造函数不能省略 new,于是第一行写错了.然后第二行尝试重新声明一次,结果又报错说重复声明了.那干脆不声明,直接赋值总行吧,结果又报错说 map 未定义. 这三个报错直接对应规范里的下面三条规则(并附通俗解释): 23.1.1.1 Map() 1. If NewTarget is undefined, throw a TypeError exception. 解释:Map() 不带 new 不能被调用. 1…