二十五岁时我们都一样愚蠢、多愁善感,喜欢故弄玄虚,可如果不那样的话,五十岁时也就不会如此明智。
标题:JavaScript函数定义
JavaScript 函数使用 function 关键字来 定义
你可以使用一个函数 声明 或者一个函数 表达式.
函数声明
在本教程中,您了解了以下语法声明函数:
function functionName(parameters) { code to be executed }声明一个函数不会立即执行。它们被“保存以供稍后使用”,稍后将被执行,当它们被调用(call)。
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);上面的函数实际上是一个匿名函数(一个没有名字的函数)
存储在变量中的函数不需要函数名。它们总是使用变量名调用(call).
上面的函数用分号结束,因为它是一个可执行语句的一部分。
Function() 构造函数
正如你在前面的例子中看到的,JavaScript函数使用function关键字定义。
函数还可以用一个内置的叫做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的默认行为是移动声明当前范围的顶部。
Hoisting 适用于变量声明和函数声明。
正因为如此,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 操作符用在函数上返回"function".
但是,JavaScript函数可以被描述为对象。
JavaScript函数都有属性和方法.
arguments.length 属性返回函数调用时接收的参数个数:
function myFunction(a, b) { return arguments.length; }toString() 方法将函数作为字符串返回:
function myFunction(a, b) { return a * b; } var txt = myFunction.toString();定义为对象属性的函数称为对象的方法。为创建新对象而设计的函数称为对象构造函数.