ECMAScriptJS高程3.基本概念(6)函数

1.ECMAScript被的函数使用function关键字来声称。

eg:

1 function sum (num1,num2){
2     alert(num1+num2);
3  }
4  sum(3,7);

ECMAScript 1

注意:

  于闹return语句之函数中,函数会在实行完return语句子后止并即刻退出。因此,位于return语句之后的旁代码都永远不会见尽。

eg:

1 function sum (num1,num2){
2     return num1+num2;
3     alert("Hello!");//永远不会执行。
4  }
5  alert(sum(3,7));

  以上代码执行后,会现出内容吗“10”的告诫框,但是非会见起内容为“Hello!”的警戒框,因为函数内部推行完return语词后便停止了了,不会见尽后的alert(“Hello!”);语句。

 

2.严厉模式下本着函数的局部克

(1)不能够拿函数命名为evel或是arguments;

(2)不可知将参数命名吧evel或是arguments;

(3)不克冒出零星个命名参数同名的情形。

 

3.掌握参数

(1)ECMAScript中之参数在里头是因此一个数组来代表的,函数接收至之镇是这个累组,ECMAScript函数不在意传递进入的参数个数和参数的数据类型,从这一点可以看看,ECMAScript函数不可知兑现传统意义上的重载。

 重载函数的定义:在同等之声明域中之函数称为相同的,而参数表不同的,即由此函数的参数表而唯一标识并且来区分函数的一模一样种非常之函数。

(2)函数体内可由此arguments对象看到参数数组,从而取得传递给函数的各级一个参数。

  

1  function sum (){
2     return arguments[0]+arguments[1];
3  }
4  alert(sum(3,6));

 

ECMAScript 2

以上例子说明:

  ECMAScript函数命名的参数就提供便宜,但切莫是必不可少的。

(3)arguments对象的length属性可以得知有稍许个参数传递给了函数。

eg:

1 function howManyArgw(){
2     alert(arguments.length);
3  }
4  howManyArgw("hello",45); //2
5  howManyArgw();     //0
6  howManyArgw(12);   //1

出现三只提醒框,依次是:

ECMAScript 3

ECMAScript 4

ECMAScript 5

(4)开发人员可以采用这或多或少为函数接收任意个参数并分别实现适度的效用。

eg:

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     }
8     doAdd(20);
9     doAdd(21,10);

ECMAScript 6

ECMAScript 7

 

(5)arguments对象可以与命名参数一起利用:

eg:

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     }
8     doAdd(20);
9     doAdd(21,10);

(6)arguments的值永远与相应命名参数的价值保持同。

eg:

1  function add(num1,num2){
2         arguments[1]=10;  //每次执行add函数都会重写第二个参数,将第二个参数的值改为10.
3         alert(arguments[0]+num2);
4     }
5     add(1,2);//本来的值是1+2=3,因为第二个参数的值被改变1+10=11.

ECMAScript 8

注意:

(1)这并无是说正在些许单值会访问同一之内存空间,它们的内存空间是独立的,但是其的值会ECMAScript同步。

(2)没有传递值的命名参数将见面自行为给予undefined值。

eg:

1 function add(num1,num2){
2         arguments[1]=10;
3         alert(arguments[0]+num2);
4     }
5     alert(typeof(num2));
6     add(1);

逐出现的唤起框:

ECMAScript 9

ECMAScript 10

(3)ECMAScript中之有参数传递都是价值,不容许由此引用传递参数。