Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript调用错误的函数_Javascript - Fatal编程技术网

Javascript调用错误的函数

Javascript调用错误的函数,javascript,Javascript,我有两个javascript函数(Chrome和IE): 及 我这样叫: call(1,2); 但我在控制台上收到这个消息: call - param - 1 JavaScript中没有函数重载。JavaScript中没有函数重载。您正在尝试重载“调用”函数。Javascript不支持函数重载 一个解决方案是将函数分开,每个用例有不同的名称。您正试图重载“调用”函数。Javascript不支持函数重载 一个解决方案是将函数分开,每个用例有不同的名称。您可以使用参数 函数调用(){ log(

我有两个javascript函数(Chrome和IE):

我这样叫:

call(1,2);
但我在控制台上收到这个消息:

call - param - 1

JavaScript中没有函数重载。

JavaScript中没有函数重载。

您正在尝试重载“调用”函数。Javascript不支持函数重载


一个解决方案是将函数分开,每个用例有不同的名称。

您正试图重载“调用”函数。Javascript不支持函数重载


一个解决方案是将函数分开,每个用例有不同的名称。

您可以使用
参数

函数调用(){
log(“调用参数-”+参数.length);
}
电话(1);
呼叫(1,2);

呼叫(1,2,3)您可以使用
参数

函数调用(){
log(“调用参数-”+参数.length);
}
电话(1);
呼叫(1,2);

呼叫(1,2,3)解决方案是使用带有内部条件的单个函数

function call(param1, param2){
  if(param2){
    console.log("call param - 2");
  } else if(param1) {
    console.log("call param - 1");
  } else {
    console.log("call invalid");
  }
}

解决方案是使用一个包含条件的函数

function call(param1, param2){
  if(param2){
    console.log("call param - 2");
  } else if(param1) {
    console.log("call param - 1");
  } else {
    console.log("call invalid");
  }
}

您尝试执行的操作称为函数重载。不幸的是,它在JavaScript中不可用

但是如果你需要的话,你可以试着去模拟它

请查看此链接,其中讨论了最佳方法:


您尝试执行的操作称为
函数重载。不幸的是,它在JavaScript中不可用

但是如果你需要的话,你可以试着去模拟它

请查看此链接,其中讨论了最佳方法:


首先,js不检查参数计数:您可以使用任意数量的参数调用任何函数。

其次,声明函数与声明函数的含义相同,因此对于js引擎,您的代码是

var call = fun1
var call = fun2

var call
......
call = fun1
call = fun2
对于函数定义,值也将被提升,因此它实际上是

var call = fun2
......
因此,它将始终是后一个。

如果要访问普通函数中的所有参数,可以使用
参数
,也可以这样做

function f(foo, bar, ...args) {...}

在arrow函数中没有参数。首先,js不检查参数计数:您可以使用任意数量的参数调用任何函数。

其次,声明函数与声明函数的含义相同,因此对于js引擎,您的代码是

var call = fun1
var call = fun2

var call
......
call = fun1
call = fun2
对于函数定义,值也将被提升,因此它实际上是

var call = fun2
......
因此,它将始终是后一个。

如果要访问普通函数中的所有参数,可以使用
参数
,也可以这样做

function f(foo, bar, ...args) {...}

在arrow函数中,如果在
调用(param1,param2)
之后定义了
调用(param1)
,则不存在
参数

如果重新分配给
调用
引用。因此,当您调用
call(1,2)
时,将调用
call(param1)
。JS中没有函数重载这样的东西。您可以使用以下两种方法之一来实现包含变量参数的函数。

如果
调用(param1)
是在
调用(param1,param2)
之后定义的,则重新分配给
调用
引用。因此,当您调用
call(1,2)
时,将调用
call(param1)
。JS中没有函数重载这样的东西。您可以使用以下两种方法之一来实现包含变量参数的函数。

javascript如何知道您指的是哪一个?哦,c++/c#/java背景是itAFAIK,不能在JavaScript中使用函数重载。上次创建的函数就是被调用的函数。(如果你切换函数声明,你的结果将是“调用参数-2”。看看javascript如何知道你的意思?哦,c++/c#/java背景是itAFAIK,你不能在javascript中使用函数重载。你最后创建的函数就是被调用的函数。(如果你切换函数声明,你的结果将是。)“调用参数-2”。请参阅