JavaScript——函数

函数

通过函数可以封装任意多条语句,可以在任何地方,任何时候调用执行。ECMAScript中的函数使用function关键字来声明,后跟一组参数和函数体。

语法:

     funcation funcationName(arg0,arg1……,argN){

                 statements

     }
     function sayHi(name,message){
            alert("Hello"+name+","+message);

     }

这个函数可以通过其函数名来调用,后面还要加上一对圆括号和参数(圆括号中的参数如果有多个,可以用逗号隔开)。

调用sayHi()函数代码:

 sayHi("Nicholas","how are you today?");

函数输出的结果是“Hello Nicholas,how are you today?”

位于return语句之后的任何代码都永远不会执行。

一个函数中也可以包含多个return语句,如下所示:

function differentnum1num2){
    if(num1>num2){
       return num1-num2;
     }else{
       return num2-num1;  
     }
}

return 语句也可以不带有任何返回值。在这种情况下,函数在停止执行后将返回undefined值。这种用法一般用在需要提前停止函数而又无需返回值的情况下。

例如:

function sayHi{
    return;
    alert("Hello "+name+","+message);
}

严格模式下对函数有一些规则:

  • 不能把函数命名为eval或者arguments;
  • 不能把参数命名为eval或者arguments;
  • 不能出现两个命名参数同名的情况。
1 参数

ECMAScript中的参数在内部都是用一个数组来表示的,函数接收到的始终都是这个数组,所以不关心数组中包含哪些参数。数组中可以有参数,也可以没有参数。

ECMAScript函数不介意传递进来多少各参数,在不在乎传进来的参数是什么数据类型。实际上,在函数体内可以通过arguments对象访问这个参数数组,从而获取传递函数的每一个参数。

使用Length属性来确定传递进来多少个参数。

如下例:

function howManyArgs(){
     alert(arguments.Length);
}
howManyArgs( "string  ",45);    //2
howManyArgs();                  //0
howManyArgs(12);                //1
funcation doAdd(){
   if(arguments.Length=1){
       alert(arguments[0]+10);
      }else if{
       alert(arguments[0]+arguments[1]); 
     }
}

doAdd(10);     //20
doAdd(30,20);  //50

arguments 对象可以与命名参数一起使用,关于arguments的行为,它的值永远与对应命名参数的值把持同步。

arguments对象的长度是由传入参数的个数决定的,不是由定义函数时的命名参数的个数决定的。

对于参数,没有传递值的命名参数将自动被赋予undefined值,相当于定义了变量,但是没有定义变量的值。

严格模式下不可以重写arguments的值。

1 没有重载

ECMAScript函数签名,因为某参数是由包含零或者多个值的数组来表示的。没函数签名,真正的重载是不可能做到的。

例如:ECMAScript中定义了两个名字相同的函数,则该名字只属于后定义的函数。

function addSomeNumbernum){
     return num+100;
}
function addSomeNumbernum){
    return num+200;

}

var result=addSomeNumber(100);              //300

由于后定义的函数覆盖了先定义的函数,因此当在最后一行代码中调用这个函数时,返回的结果就是300。

猜你喜欢

转载自blog.csdn.net/qq_36647038/article/details/80386485