JavaScript 函数界说


JavaScript 运用关键字 function 界说函数。

函数能够经过声明界说,也能够是一个表达式。


函数声明

在之前的教程中,你现已了解了函数声明的语法 :

function functionName(parameters) {
  履行的代码
}

函数声明后不会当即履行,会在咱们需求的时分调用到。

实例

function myFunction(a, b) {
    return a * b;
}

测验一下 »

Note 分号是用来分隔可履行JavaScript句子。
由于函数声明不是一个可履行句子,所以不以分号完毕。


函数表达式

JavaScript 函数能够经过一个表达式界说。

函数表达式能够存储在变量中:

实例

var x = function (a, b) {return a * b};

测验一下 »

在函数表达式存储在变量后,变量也可作为一个函数运用:

实例

var x = function (a, b) {return a * b};
var z = x(4, 3);

测验一下 »

以上函数实际上是一个 匿名函数 (函数没有称号)。

函数存储在变量中,不需求函数称号,一般经过变量名来调用。

Note 上述函数以分号完毕,由于它是一个履行句子。


Function() 结构函数

在以上实例中,咱们了解到函数经过关键字 function 界说。

函数相同能够经过内置的 JavaScript 函数结构器(Function())界说。

实例

var myFunction = new Function("a", "b", "return a * b");

var x = myFunction(4, 3);

测验一下 »

实际上,你不用运用结构函数。上面实例能够写成:

实例

var myFunction = function (a, b) {return a * b}

var x = myFunction(4, 3);

测验一下 »

Note 在 JavaScript 中,许多时分,你需求防止运用 new 关键字。


函数提高(Hoisting)

在之前的教程中咱们现已了解了 "hoisting(提高)"。

提高(Hoisting)是 JavaScript 默许将当时效果域提高到前面去的的行为。

提高(Hoisting)应用在变量的声明与函数的声明。

因而,函数能够在声明之前调用:

myFunction(5);

function myFunction(y) {
    return y * y;
}

运用表达式界说函数时无法提高。


自调用函数

函数表达式能够 "自调用"。

自调用表达式会主动调用。

假如表达式后边紧跟 () ,则会主动调用。

Y不能自调用声明的函数。

经过增加括号,来阐明它是一个函数表达式:

实例

(function () {
    var x = "Hello!!";      // 我将调用自己
})();

测验一下 »

以上函数实际上是一个 匿名自我调用的函数 (没有函数名)。


函数可作为一个值运用

JavaScript 函数作为一个值运用:

实例

function myFunction(a, b) {
    return a * b;
}

var x = myFunction(4, 3);

测验一下 »

JavaScript 函数可作为表达式运用:

实例

function myFunction(a, b) {
    return a * b;
}

var x = myFunction(4, 3) * 2;

测验一下 »


函数是目标

在 JavaScript 中运用 typeof 操作符判别函数类型将回来 "function" 。

但,JavaScript 函数描绘为一个目标愈加精确。

JavaScript 函数有 特点 办法

arguments.length 特点回来函数调用进程接收到的参数个数:

实例

function myFunction(a, b) {
    return arguments.length;
}

测验一下 »

toString() 办法将函数作为一个字符串回来:

实例

function myFunction(a, b) {
    return a * b;
}

var txt = myFunction.toString();

测验一下 »

Note 函数界说作为目标的特点,称之为目标办法。
函数假如用于创立新的目标,称之为目标的结构函数。