所以我有js文件,使用以下方法:
var DBProcessing = function()
{
console.log("ok")
...
}
var DBProcessing = function(str)
{
console.log(str);
...
}
Run Code Online (Sandbox Code Playgroud)
在打电话给DBProcessing()我打印时undefined
是否有任何方法可以在没有签名中的变量的情况下显式调用该方法?
修改函数itelf以有条件地设置str
var DBProcessing = function(str)
{
str = str || 'ok';
console.log(str);
...
}
Run Code Online (Sandbox Code Playgroud)
Javascript与强类型语言不同,您必须在其中提供有关参数数量和类型的具体方法签名.
在传统的强类型语言中,您可以实现方法重载
public void OverloadedMethod()
{
}
public void OverloadedMethod(int id)
{
}
public void OverloadedMethod(int id, int age)
{
}
Run Code Online (Sandbox Code Playgroud)
你必须在论证的数量和类型方面非常具体.
在javascript中,没有这样的方法声明,你只能用接受变量类型/数量输入的方法真正声明一个方法签名.方法本身取决于如何处理这些参数.
function JSMethod(id, age){
console.log(id);
console.log(age);
}
JSMethod();
//outputs 'undefined', 'undefined'
JSMethod(1);
//outputs 1, 'undefined'
JSMethod(1, 26);
//outputs 1, 26
Run Code Online (Sandbox Code Playgroud)
好的,如果你通过第三个参数怎么办?你可以做
function JSMethod(id, age){
console.log(id);
console.log(age);
console.log(arguments[2]);
}
JSMethod(1, 26, 99);
//outputs 1, 26, 99
Run Code Online (Sandbox Code Playgroud)
这是因为每个方法都有一个arguments对象,其中包含被调用者提供的所有传递参数.
但是,最佳实践要求您尽可能清楚地使用您的方法.因此,虽然javascript方法可以接受变量类型/数量的参数,但最好将它们声明并在需要时设置为默认值
function JSMethod(id, age){
id = id || 1;
age = age || 16;
}
Run Code Online (Sandbox Code Playgroud)