我知道当它在任何地方被调用时,我们可以在函数内部获取 javascript 中的所有参数。我们可以获得额外的参数,我们也没有问过。 但是我们可以只得到关于 javascript 函数的参数吗? 喜欢:
function a(a,b){
console.log(arguments);
}
如果我们在某处调用函数 a a(1,2,3,4,5)
那么输出将像 [1,2,3,4,5]
但我只想要 [1,2]
因为我预计函数中只有两个参数?
我的条件是
index: (req, res, next) => {
var params = ['batch_id', 'section_id', 'subject_id', 'term', 'assesment_id', 'assesment_type'];
var _ = req._;
req.utils.requestValidation([req,res,next], params,'query')
// But i dont want to send params like above always instead like below
req.utils.requestValidation(arguments, params,'query')
它被调用的地方是
requestValidation: (data, options, param) => {
if (!options) return;
var _ = data[0]._ || data._;
var rules = {};
var data = {};
var sanity = {};
var elr = [validator.escape, validator.ltrim, validator.rtrim];
options.map((item, index) => {
rules[item] = 'required';
sanity[item] = elr;
});
data[param] = sanity;
if (typeof data != 'string') {
sanitizer.setOptions(data);
var data = sanitizer.sanitize(data[0], data[1], data[2],param);
return data[0].validation.validate(rules, data[0][param]);
}
return data.validation.validate(rules, data[param]);
},
最佳答案
如果您只需要两个参数,只需将arguments
削减为两项
如果你想要自动的,你可以写函数包装器,像这样:
function wrapperCutParams(func, paramsCount){
return function(){
var args = Array.prototype.slice(arguments, 0);
if(args.length > paramsCount){
args = args.slice(0, paramsCount)
}
func.apply(this, args)
}
}
然后
var a = function a(a,b){
console.log(arguments);
}
a = wrapperCutParams(a, 2)
或者只是
a = wrapperCutParams(function a(a,b){
console.log(arguments);
}, 2)
关于javascript只获取函数内部的参数作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33956425/