对象扩展运算符在 Microsoft Edge 中抛出错误

Posted

技术标签:

【中文标题】对象扩展运算符在 Microsoft Edge 中抛出错误【英文标题】:Object spread operator throw error in microsoft edge 【发布时间】:2020-06-24 08:21:04 【问题描述】:

我有代码:

let a = a: 'a', b: 'b';
let b = c: 'c', d: 'd';
let c = ...a, ...b;

chrome/firefox/... 中显示:c = a: 'a', b: 'b', c: 'c', d: 'd',但在 microsoft edge 中会抛出错误 Expected identifier, string or number

我尝试使用cdn.polyfill.iohttps://babeljs.io/docs/en/babel-polyfill,但没有成功。

如何在 microsoft edge 中运行我的 webpack 代码?

【问题讨论】:

你在使用 babel 吗?如果是,您可以发布您的 babel 配置吗? 请从这里查看兼容版本developer.mozilla.org/en-US/docs/Web/javascript/Reference/… Kornflexx,我不使用 babel 来编译我的代码,但我发现一些帖子可以包含 babel polifyls 作为脚本,因此我尝试使用它。 【参考方案1】:

它应该在 Edge 79 中可用,不需要任何转编译器(如 Babel)(但不是 IE,不要混淆它们)。

https://caniuse.com/#feat=mdn-javascript_operators_spread_spread_in_object_literals

也就是说,在大多数情况下,如果需要,您可以使用 Object.assign() 代替 -

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

您的代码将是:

let a = a: 'a', b: 'b';
let b = c: 'c', d: 'd';
let c = Object.assign(a,b)

console.log(c)

自 Edge 12 起支持Object.assign()

https://caniuse.com/#feat=mdn-javascript_builtins_object_assign

【讨论】:

Alex L,我的版本是Microsoft Edge 44.18362.449.0 Microsoft Edgehtml 18.18363,默认安装在系统上 完美,那么你可以使用Object.assign()没问题,从Edge 12开始支持:caniuse.com/#feat=mdn-javascript_builtins_object_assign【参考方案2】:

...obj 语法称为“Object Rest/Spread Properties”,它是 ECMAScript 2018 的一部分,Edge Legacy 不支持。您可以使用Babel 对其进行转译。

如果你只是想在非 Node.js 环境中使用它,你可以使用 babel-standalone。你只需要在你的脚本中加载 babel-standalone 并在 “text/babel”“text 类型的 script 标签中编写你想要转译的脚本/jsx”,Edge Legacy 中的结果将是"a":"a","b":"b","c":"c","d":"d"

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.18.1/babel.min.js"></script>
</head>
<body>
    <script type="text/babel">
        let a =  a: 'a', b: 'b' ;
        let b =  c: 'c', d: 'd' ;
        let c =  ...a, ...b ;
        console.log(JSON.stringify(c));
    </script>
</body>
</html>

【讨论】:

以上是关于对象扩展运算符在 Microsoft Edge 中抛出错误的主要内容,如果未能解决你的问题,请参考以下文章