内置对象-Function
函数与函数作用域
函数
一般来说,一个函数是可以通过外部代码调用的一个“子程序”(或在递归的情况下由内部函数调用)。像程序本身一样,一个函数由称为函数体的一系列语句组成。值可以传递给一个函数,函数将返回一个值。
在 JavaScript中,函数是头等(first-class)对象,因为它们可以像任何其他对象一样具有属性和方法。它们与其他对象的区别在于函数可以被调用。简而言之,它们是Function对象。
一般来说,一个函数是可以通过外部代码调用的一个“子程序”(或在递归的情况下由内部函数调用)。像程序本身一样,一个函数由称为函数体的一系列语句组成。值可以传递给一个函数,函数将返回一个值。
在 JavaScript中,函数是头等(first-class)对象,因为它们可以像任何其他对象一样具有属性和方法。它们与其他对象的区别在于函数可以被调用。简而言之,它们是Function对象。
函数定义
函数声明
function name([param[, param[, ... param]]]) { statements }
name
函数名.
param
传递给函数的参数的名称。
statements
组成函数体的声明语句。
function myfun(n1,n2){
return null;
}
函数表达式
函数表达式和函数声明非常相似,它们甚至有相同的语法。一个函数表达式可能是一个更大的表达式的一部分。可以定义函数“名字”(例如可以在调用堆栈时使用)或者使用“匿名”函数。函数表达式不会提升,所以不能在定义之前调用。
var myFunction = function name([param[, param[, ... param]]]) { statements }
下面是匿名函数的一个例子(函数没有名字):
var myFunction = function() {
// statements
}
也可以在定义时为函数命名:
var myFunction = function namedFunction(){
// statements
}
命名函数表达式的好处是当我们遇到错误时,堆栈跟踪会显示函数名,容易寻找错误。