函数概述与定义
函数概述
函数是这样一段 JavaScript 代码,它只定义一次,但可以被执行或调用任意次,JavaScript 的函数是参数化的:函数的定义包括一个称为形参的标识符列表,函数调用会为形参提供实参值,函数使用实参值来计算返回值,成为该函数调用表达式的值。除了实参之外,每次调用还会拥有另一个值 —— 本次调用的上下文 —— this
关键字的值。
如果函数挂载在一个对象上,作为对象的一个属性,就称之为对象的方法,当通过这个对象来调用函数,该对象就是此次调用的上下文,也就是函数的 this
的值。
用于初始化一个新创建的对象的函数叫做构造函数。
在 JavaScript 中,函数也是对象,所以可以将其赋值给变量,也可以将其作为参数传递给其他函数。
JavaScript 函数可以嵌套在其他函数中定义,从而构成一个闭包(closure)。
函数定义
函数使用 function
关键字来定义,可用在函数定义表达式或函数声明语句里:
// 1、通过函数语句定义
// 通过递归计算阶乘
function factorial(x) {
if (x <= 1) return 1;
return x * factorial(x - 1);
}
// 2、通过函数表达式定义,将函数赋给变量
// 此例是递归函数,所以给它命名,一般这种方式定义的函数无需命名
var f = function fact(x) {
if (x <= 1)
return 1;
else
return x * fact(x-1);
};
// 3、将函数作为参数传给其他函数
data.sort(function(a, b) { return a - b; });
// 4、函数定义后立即调用
var ten_squared = (function(x) {
return x * x;
}(10));
大多数函数都包含一条 return
语句返回函数值,如果没有的话返回 undefined
。
函数命名规范
- 任何合法的 JavaScript 标识符都可以作为函数名称,命名时尽量兼顾可读性和简洁性
- 函数名称通常是动词或动词为前缀,第一个字符小写,多个单词以下划线分隔,如
like_this
,或者采用另一种约定,如likeThis
,内部函数或私有函数以下划线开头,如_like_this
- 在一些框架里会为经常调用的函数指定短名称,如 jQuery 中的
$()
嵌套函数
在 JavaScript 中,函数可以嵌套在其他函数里:
function hypotenuse(a, b) {
function square(x) { return x * x; }
return Math.sqrt(square(a) + square(b));
}
嵌套函数可以访问嵌套它们的函数的参数和变量。
No Comments