传递一个在多个参数的函数参数在JavaScript
我的角度功能,在服务事端等规定,传递一个在多个参数的函数参数在JavaScript
$delegate.isConfigurable = function (product, config) {
if (product) {
///.....
}
return config.getDetail();
};
现在,在controller
,我通过调用这个:
mySer.isConfigurable(null, conf);
但是通过null
看起来有点哇。
我试过打电话mySer.isConfigurable(conf);
,但这使得conf
匹配功能的first parameter
。
取而代之的是,还有其他方式只通过conf
?
也许你可以切换参数定义的顺序?
$delegate.isConfigurable = function (config, product) {
if (product) {
///.....
}
return config.getDetail();
};
然后就可以调用只是mySer.isConfigurable(conf);
和product
在这种情况下是不确定的,并且将评估为false。
如果你不想使用null
那么你需要像互换波纹管的功能参数。
$delegate.isConfigurable = function (config, product) {
if (product) {
///.....
}
return config.getDetail();
};
而现在如果你调用该函数传入一个参数,这将是会undefined
传递config
和product
参数的值。
mySer.isConfigurable(conf);
切换参数是好的..但任何通用的方式来做到这一点? –
@nowhewhomustnotbenamed。是的,这是通常的做法。强制性参数先行,完全是为了避免你遇到的问题。否则,应该对'arguments'进行冗长的解析,正如另一个答案所解释的那样。 – estus
如果有具有不同的参数数目,然后可以使用arguments object
arguments对象的功能是对应于传递到参数数组状物体一个function.The参数对象可用的所有功能内的局部变量
所以,你的代码将
$delegate.isConfigurable = function() {
var param = null,
config = null;
if (arguments && arguments.length == 2) {
// you have param and config
param = arguments[0];
config = arguments[1];
} else if (arguments && arguments.length == 1) {
config = arguments[0];
}
return config.getDetail();
};
,您可以通过一个或两个或N PARAM数
mySer.isConfigurable(conf)
mySer.isConfigurable(param,conf)
mySer.isConfigurable(param1,param2,conf)
开关PARAMATERS是好的..但这样做的任何通用的方式调用这个? –
我不相信。在不同的地方调用唯一参数实际上是一个不同的变量时,也可能会引起混淆。我想你也可以做两个独立的帮助函数,它们用不同的参数调用这个'isConfigurable'函数。 – Caleb