最新的Web开发教程
 

JavaScript函数定义


JavaScript函数与定义function关键字。

您可以使用函数声明或函数表达式


函数声明

在本教程的前面,你了解到函数的语法如下声明

function functionName ( parameters ) {
  code to be executed
}

声明的函数不立即执行。 他们是“保存以备后用”,并且将在以后执行,当他们被调用(呼吁)。

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

分号用于分隔执行JavaScript语句。
由于函数声明不是可执行语句,它不是常见的以分号结束它。


函数表达式

一个JavaScript功能也可使用表达式定义。

函数表达式可以被存储在一个变量:

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

函数表达式已经被存储在一个变量之后,该变量可以作为一个功能:

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

上面的函数实际上是一个匿名函数 (没有名字的函数)。

存储在变量的函数不需要函数名。 他们总是调用(调用)使用变量名。

因为它是一个可执行语句的一部分,上面的函数以一个分号结束。


Function()构造函数

正如你在前面的例子中所看到的,JavaScript函数与定义的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);
试一试»

在大多数情况下,你可以尽量避免使用new JavaScript中的关键字。


Function Hoisting

在本教程早些时候,您了解了"hoisting"

起重是JavaScript的移动声明到当前范围的顶部的默认行为。

起重适用于变量声明和函数声明。

正因为如此,JavaScript函数可以在声明之前被调用:

myFunction(5);

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

使用表达式定义的函数不悬挂。


自调用函数

函数表达式可以做成“自我调用”。

一个自调用表达式自动调用(启动),没有被调用。

如果表达式后跟函数表达式将自动执行()

你不能自调用函数声明。

你必须添加周围功能括号以表明它是一个函数表达式:

(function () {
    var x = "Hello!!";      // I will invoke myself
})();
试一试»

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


函数可以用作值

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;
试一试»

函数是对象

typeof在JavaScript中运算符返回"function"的功能。

但是,JavaScript函数可以被描述为对象。

JavaScript函数同时拥有属性方法

arguments.length属性返回被调用函数时收到的参数个数:

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

toString()方法返回函数的字符串:

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

var txt = myFunction.toString();
试一试»

定义为一个对象的属性的函数,称为对象的方法。
旨在创建新的对象的函数,称为对象的构造函数。