与扩展语法有关的古怪语法

时间:2019-11-25 07:10:27

标签: javascript ecmascript-6 babeljs

最近,我遇到了这段代码,在我更新babel依赖项之前,它运行良好。

const path = require('path');
 module.exports = {
 entry: './src/index.js',
 output: {
   filename: 'main.js',
   path: path.resolve(__dirname, 'dist'),
   publicPath: "",
   library:"Hello",
   libraryTarget:"umd",
   globalObject: "this"
   },
 };

为使其再次起作用,我将代码更改为:-

const somefunc = ({ type }) => [
  ...type === 'image' && ['height'],
  'name',
  'text'
];

现在的问题是,在我们的代码中许多地方都使用了较旧的语法。另外,在社区或旧版ES或babel编译器中的任何地方都找不到这种语法。

1 个答案:

答案 0 :(得分:0)

如注释中所述,这是一种有条件地将项目添加到数组的方法,但是如果条件为false,则此代码将不起作用。可以使用三元运算符解决此问题:

const somefunc = ({ type }) => [
  ...type === 'image' ? ['height'] : [],
  'name',
  'text'
];

您的第二个选项也将无法正常工作,因为如果条件为false,它将向阵列添加false