首页 > 解决方案 > 为什么默认参数值不起作用?

问题描述

我有一个从数据库中获取一些东西的函数。我想将函数设置为接受一个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})

出于某种原因,执行上述操作不起作用。也就是说,我总是undefined在控制台中获取ProductID.

如果我只是简单地执行以下操作,那么我确实会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
        }
      }
    }

标签: javascriptwebpackbabeljsbabel-loader

解决方案


我认为您希望对参数getProduct进行解构:

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

然后你可以这样做:

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

不应该是 webpack 或 babel 问题


推荐阅读