JavaScript 函数定义
-
函数声明
JavaScript函数使用关键字function定义。您可以使用函数声明或函数表达式。语法function functionName(parameters) { // code to be executed }
声明的函数不会立即执行。它们“保存供以后使用”,稍后将在调用(调用)时执行。
尝试一下function myFunction(a, b) { return a * b; }
分号用于分隔可执行的JavaScript语句。由于函数声明不是可执行语句,因此以分号结束它并不常见。
-
-
-
函数提升
在本教程的前面,您学习了“变量提升”(JavaScript变量提升)。提升是JavaScript将声明移动到当前范围顶部的默认行为。提升适用于变量声明和函数声明。因此,可以在声明JavaScript函数之前调用它们:myFunction(5); function myFunction(y) { return y * y; }
使用表达式定义的函数不会被提升。 -
自我调用函数
函数表达式可以“自我调用”。自动调用(启动)自调用表达式,而不调用。如果表达式后跟(),函数表达式将自动执行。您无法自行调用函数声明。您必须在函数周围添加括号以指示它是函数表达式:
尝试一下(function () { var x = "Hello!!"; // 我将自动调用 })();
上面的函数实际上是一个匿名的自调用函数(没有名称的函数)。 -
-
函数是对象
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();
定义为对象属性的函数称为对象的方法。用于创建新对象的函数称为对象构造函数。
-
箭头功能
箭头函数允许使用简短的语法来编写函数表达式。您不需要function关键字,return关键字和大括号。
尝试一下// ES5 var x = function(x, y) { return x * y; } // ES6 const x = (x, y) => x * y;
箭头功能没有自己的this功能。它们不适合定义对象方法。箭头功能未被提升。它们必须在使用前进行定义。使用const比使用更安全var,因为函数表达式始终是常量值。如果函数是单个语句使用return,则只能省略关键字和大括号。因此,保持它们可能是一个好习惯:
尝试一下const x = (x, y) => { return x * y };
IE11或更早版本不支持箭头功能。