当存在两个同名函数时,为什么只有第二个函数运行?
Why does only the second function run when two functions with the same name exist
我有以下这些函数:
function a(obj)
{
console.log("function 1 "+obj);
}
function a(x)
{
console.log("function 2 "+"3");
}
a(1);
为什么总是第二个函数在运行?为什么不是第一个?
不能在同一作用域中有两个函数,且名称相同。第二个将取代第一个。这就是为什么第一个语句永远不会被执行。
如果希望重载函数,可以通过在函数内立即检查实参的类型来实现。例如,考虑以下内容:
function a ( x ) {
var output;
switch ( typeof x ) {
case "string" :
output = "foo";
break;
case "object" :
output = "bar";
break;
default:
output = typeof x;
}
console.log( output );
}
由于第二个函数是在第一个函数之后声明的,因此它将覆盖第一个函数。Javascript不关心参数是否不同,它只按照函数名来处理。
相关文章:
- jQuery函数:为什么第一个事件的完成延迟到第二个事件完成
- JavaScript:回调函数与匿名函数 – 为什么只有一个触发
- 节点.js带方括号的全局变量和函数 - 为什么这样做
- 为什么简单的MVC教程没有调用我的javascript函数?为什么可以't我也调试
- 当你改变原型时,构造函数为什么会改变?(参见代码)
- JS-op.继承和apply()函数.为什么没有'不起作用
- 立即调用的函数表达式运行最后定义的函数.为什么?
- 我必须将$scope基元封装在对象中,但可以在不封装它们的情况下使用函数.为什么?
- 很好的上传程序.cancelAll不是onComplate回调中的函数.为什么?
- javascript匿名函数:为什么我的脚本没有'不起作用
- JavaScript 函数 - 为什么这样做
- 学习Swift - inout函数-为什么要修改全局变量的值
- 剑道网格错误-网格.选择不是函数为什么
- 将window和undefined传递给立即调用的匿名函数.为什么?
- “使用Strict"破坏Javascript函数-为什么?
- JavaScript的keys()函数为什么没有文档
- JavaScript二进制缩减函数:为什么16 + 0返回0
- Javascript错误,无法识别函数.为什么
- 尝试执行FizzBuzz函数.为什么不工作
- 变量重赋值保留了以前的原型函数.为什么