首页 > 代码库 > 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基本概念