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)
在这种情况下,哪个函数会调用?是第一个还是第二个函数?为什么?
提前致谢.
让我们付诸行动,看看结果:
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的版本.