Javascript 为什么默认参数值不起作用?
我有一个函数可以从数据库中获取一些东西。我想将函数设置为接受Javascript 为什么默认参数值不起作用?,javascript,webpack,babeljs,babel-loader,Javascript,Webpack,Babeljs,Babel Loader,我有一个函数可以从数据库中获取一些东西。我想将函数设置为接受DBConnectionstring参数和ProductID参数,但由于很少提供这一点,我希望设置一个默认值。我尝试了以下方法: const DBConfig = require('./db.config'); async function getProduct(DBConnection = DBConfig.SQLConnection, ProductID) { console.log(ProductID) //
DBConnection
string参数和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的网页包。我不认为这是一个透明的问题,但不确定。有什么想法吗?在我的网页配置中,我要处理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
的参数进行分解:
函数getProduct({DBConnection=DBConfig.SQLConnection,ProductID}){
...
}
然后你可以做:
Product=wait api.getProduct({ProductID:req.body.ProductID})
不应该是webpack或babel问题带有默认值的参数必须在没有默认值的参数之后。我认为您的想法是正确的,但这不是在解构参数中提供默认值的正确语法。
function getProduct({DBConnection=DBConfig.SQLConnection,ProductID}{…}