js中为何没有重载
1.理解参数
JavaScript函数不介意传递进来多少个参数,也不在乎传进来参数是什么数据类型。也就是说,即便你定义的函数只接收两个参数,在调用这个函数时也未必一定要传递两个参数。可以传递一个、三个甚至不传递参数。你肯定在疑问为什么会这样?
原因在于JavaScript中的参数在内部是用一个数组来表示的。函数接收到的始终都是这个数组,而不关心数组中包含哪些参数(如果有参数的话)。如果这个数组中不包含任何元素,无所谓;如果包含多个元素,也没问题。实际上,在函数体内可以通过arguments对象来访问这个参数数组,从而获取传递给参数的每一个参数。
例1:
function howManyArgs(){ alert(arguments.length);}howManyArgs("string",45);//2howManyArgs();//0howManyArgs(12);//1
function doAdd(num1,num2){ arguments[1]=10; alert(arguments[0]+num2);}doAdd(30,30);//40
function addNum(tmp1){ alert(tmp1+100);}function addNum(tmp1,tmp2){ alert(tmp1+200);}addNum(100);//300
var sum = new Function("num1","num2","return num1+num2");//不推荐
function sum(num1,num2){ return num1+num2;} alert(sum(10,10));//20var anotherSum =sum;alert(anotherSum(10,10));//20 sum=null;alert(anotherSum(10,10));//20
var addNum = function(tmp1){ alert(tmp1+100);};addNum = function(tmp1,tmp2){ alert(tmp1+200);};