函数提供两个接口实现与外界交互。其中,参数是入口,接收外界信息,然后使用返回值,作为出口,与外界实现交互。
函数返回值
在函数体内,使用return语句可以设置函数的返回值,一旦执行return语句,它将停止函数的运行,并把return关键字后面的表达式的运算值返回。如果不包含return语句,则执行完函数体内每条语句后,最后返回undefined值。
**JavaScript是一种弱类型语言,所以函数对于接收和输出数据都没有类型限制,JavaScript也不会自动检测输入和输出数据的类型。
function f(){
return function(x,y){ //返回值为函数
return x+y;
}
}
函数的参数没有限制,但是返回值只能是一个。如果要输出多个值,可以通过数组或者对象进行设计。
function f(){
var a=[];
a[0]=true;
a[1]=function(x,y){
return x+y;
}
a[2]=123;
return a;
}
调用函数
函数在默认状态下是不会被执行的,一般使用小括号运算符来激活函数运行,在小括号运算符中可以包含零个或多个参数,利用逗号隔开。
函数的多重调用:
function f(x,y){
return x+y;
}
alert(f(f(2,4),f(8,9)));
如果函数返回值是一个函数,则在调用时可以使用多个小括号运算符反复调用。
function f(x,y){
return function(){
return x*y;
}
}
alert(f(6,8)());
如果定义函数的返回追为函数本身,可以通过无数个小括号运算符反复调用。
在嵌套函数中,JavaScript遵循从内到外的原则就近调用函数,但是不会从外到内调用函数。这样可以避免嵌套函数中调用同名函数可能引起的冲突。
function f(){
return 1;
}
function o(){
return o();
function o(){
return f(){
function f(){
return 3;
}
}
function f(){
return 2;
}
alert(f()); //返回1
alert(o()); //返回3
函数作用域
JavaScript把函数视为一个封闭 的结构体,与外界完全独立,在函数体内声明的变量、参数、私有函数等对外是不可见的。
对象可以通过点号运算符访问内部成员,但是在函数体外,无法通过点号运算符访问其内部包含的成员。