函数对于任何语言来说都是一个核心的概念。通过函数能够封装任意多条语句,而且可以用在任何的地方、任何时候调用执行。ECMAScript中的函数使用function 关键字来进行生命,后边跟一组参数以及函数体。函数的基本语法如下所示:
function functionName(arg0,arg1,arg2,...argN){ statement }下边是一个函数的例子
function functionName(name ,message){ console.log('my name is '+name+","+message) } functionName('kevin',"what's your name ?")输出的是:my name is kevin,what’s your name ?
这里有需要注意函数通过函数名来调用,然后里边的参数就是作为变量来使用。
函数中return的特点:
在ECMAScript当中函数在定义时不必制定是否返回值。实际上,任何函数在任何时候都可以通过return语句后跟上要返回的值来实现返回值。除了return语句之外,没有任何的声明表示该函数会返回一个值。这个函数会在执行完return之后立即进行退出。因此,位于return语句之后的任何代码永远都不会执行。一个函数中也可以包括多个return 语句。 function Diff(num1,num2){ if (num1<num2){ return num1+"<"+num2; } else if (num1>num2){ return num1+">"+num2; } else{ return num1+"="+num2; } } var diff = Diff(1,2) console.log(diff)这里需要注意的是,这边的return不会输出任何的东西,只有将人return转换成变量的时候,输出变量才会看到这个被执行之后的值是多少。 一般来讲return语句也可以不带任何职,在这种情况下,函数在停止执行后将返回的值是undefined。
需要注意的是在严格模式对函数有一些限制
不嗯能够够把函数命名为eval或者arguments;不能够把参数命名为eval或者arguments;不能够出现命名参数相同的情况‘如果发生上述的情况,就会导致语法错误,代码无法执行。
注意: 在严格模式中对arguments做出了一些限制。首先,像前面的例子中那样的赋值操作会变得无效。重写arguments的值会导致语法错误 ECMAScript中的所有参数的传递的值,都不可能通过引用传递参数。
ECMAScript函数不能够像传统意义上那样实现重载。 而在其他语言当中,例如Java,可以为一个函数编写两个定义,只要这两个定义的签名(接收的参数的类型和数量不同即可)。如前所述ECMAScript的函数是没有签名的,因为其参数是有包含另个或者多个值得数组来表示的。没有函数清明,真正的重载时不可能做到的。
如果在ECMAScript中定义了两个名字相同的函数,则该名字指数与后定义的函数。
