首页 > 代码库 > JavaScript基本概念
JavaScript基本概念
1.理解参数
JavaScript其中有一部分组成是ECMAScript,而其函数的特性是来源于ECMAScript之中。ECMAScript函数的参数和JAVA语言不同,在JAVA语言中一个方法(同JavaScript中的函数)的调用必须同时满足:方法名相同、参数个数相同、参数类型相同、参数顺序相同的要求。而在ECMAScript中,它不介意传进来多少参数。也就是说,调用函数时未必必须传递两个参数,可以是一个、三个甚至不传递。
在底层代码中,ECMAScript的参数在内部是一个数组来表示的。函数接收到的永远是这个数组,而不会关心数组里面有多少参数。在函数中,可以用arguments对象来访问传入参数的每一个元素,其length属性可以确定传递进来有多少个参数。
例1:
1 function hello(){ 2 alert(arguments[0] +","+arguments[1]); 3 }
所以ECMAScript函数的重要特点就是:命名的参数只提供程序员方便查看,但不是必需的。
在开发过程中,可以利用这个特性接收任意参数,并分别实现对应的功能。
例2:
1 function doAdd(){ 2 if(arguments.length == 1){ 3 alert(arguments[0]+10); 4 }else if((arguments.length == 2){ 5 alert(arguments[0]+arguments[1]); 6 } 7 }
运行结果是:
1 doAdd(10); //结果是20 2 doAdd(10,30); //结果是40
arguments对象是可以和命名参数一期使用的,且它的值永远与对应命名参数的值保持同步(需要注意的是:这并不代表这两个值会访问相同的内存空间,它们的内存空间是独立的,但是值会同步;影响是单向的,修改命名参数的值不会改变arguments对应的值。)
例3:
1 function doAdd(num1,num2){ 2 if(arguments.length == 1){ 3 alert(num1+10); 4 }else if (arguments.length == 2){ 5 alert(arguments[0]+num2); 6 } 7 }
2.没有重载
ECMAScript函数不能实现重载,是因为它参数是由包含零或多个值的数组来表示,所以函数是没有签名的,如果函数没有签名的话就无法做到重载。如果同时定义了两个名字相同的函数,则生效的是后面定义的函数。
例1:
1 function addNum(num){ 2 return num+100; 3 } 4 5 function addNum(num){ 6 return num+200; 7 } 8 9 var result = addNum(100);
在上面这段代码例,正确输出的答案是300,而不是200。通过检查传入函数参数的类型和数量,然后做出不同的反应,就可以模拟出JAVA里方法重载的效果。
JavaScript基本概念