在javascript中使用构造函数调用函数

San*_*kar 1 javascript function-calls

我在javascript函数调用上有困惑,有人可以告诉下面的问题答案吗?

**Question 1:**
function A(){


}


function A(){


}

A();
Run Code Online (Sandbox Code Playgroud)

在这种情况下,哪个函数会调用?是第一个还是第二个函数?为什么?

**Question 2:**
function A(a){


}


function A(a,b){


}

A();
Run Code Online (Sandbox Code Playgroud)

在这种情况下,哪个函数会调用?是第一个还是第二个函数?为什么?

提前致谢.

emi*_*llo 5

让我们付诸行动,看看结果:

function A(){
  var el = document.getElementById('test');
  el.innerText  = "First function";
}

function A(){
  var el = document.getElementById('test');
  el.innerText  = "Second function";
}

A();
Run Code Online (Sandbox Code Playgroud)
<div id="test"></div>
Run Code Online (Sandbox Code Playgroud)

我们可以看到,第二个功能是赢家.为什么?因为当我们在第一次声明之后再次写它时我们真的会覆盖它.

至于第二个问题:

function A(a){
  var el = document.getElementById('test');
  el.innerText  = "First function";
}

function A(a,b){
  var el = document.getElementById('test');
  el.innerText  = "Second function";
}

A();
Run Code Online (Sandbox Code Playgroud)
<div id="test"></div>
Run Code Online (Sandbox Code Playgroud)

如我们所见,它仍然执行第二个问题.那是因为javascript不是一种多态语言,也就是说,它不能有两个具有相同名称但具有不同输入声明的函数,比如java.我们刚才做了同样的事情:我们覆盖了函数A.

PS:如果javascript是多态语言(它不是),那么第二次运行将返回错误,因为我们还没有声明接收0变量作为输入的函数A的版本.