函数提供两个接口实现与外界交互。其中,参数是入口,接收外界信息,然后使用返回值,作为出口,与外界实现交互。

函数返回值

在函数体内,使用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把函数视为一个封闭 的结构体,与外界完全独立,在函数体内声明的变量、参数、私有函数等对外是不可见的。

对象可以通过点号运算符访问内部成员,但是在函数体外,无法通过点号运算符访问其内部包含的成员。