为什么默认参数值不起作用?

Why does default parameter value not work?

我有一个函数可以从数据库中抓取一些东西。我想将函数设置为接受一个 DBConnection 字符串参数和一个 ProductID 参数,但是因为很少提供,所以我想设置一个默认值。我尝试了以下方法:

const DBConfig = require('./db.config');
async function getProduct(DBConnection = DBConfig.SQLConnection, ProductID) {
    console.log(ProductID)       // says undefined
    await DBConnection.connect()
......
}

我通过这样做从另一个文件调用上述函数:

Product = await api.getProduct({ProductID: req.body.ProductID})

出于某种原因,执行上述操作无效。也就是说,我总是在 ProductID.

的控制台中得到 undefined

如果我简单地执行以下操作,那么我会在控制台中打印出正确的 ProductID 值:

const DBConfig = require('./db.config');
const DBConnection = DBConfig.SQLConnection,
async function getProduct(ProductID) {
        console.log(ProductID)       // prints in the console as { ProductID: '1234' }
        await DBConnection.connect()
    ......
    }

我正在使用带有 babel-loader 的 Webpack。我 不认为 这是一个转译问题,但不确定。有任何想法吗?在我的 Webpack 配置中,我有这个来处理 js 个文件:

 {
      test: /\.js$/,
        include: [ srcPath ],
      exclude: ['/node_modules/','/src/test'],
      use: {
        loader: 'babel-loader',
        options: {
          presets: ["@babel/preset-env"]  //Preset used for env setup
        }
      }
    }

我认为你希望 getProduct 的参数被解构:

function getProduct({DBConnection = DBConfig.SQLConnection, ProductID}) {
    ...
}

那么你可以这样做:

Product = await api.getProduct({ProductID: req.body.ProductID})

应该不是 webpack 或 babel 的问题