JavaScript 函数介绍

函数是 JavaScript 的基本组件,一个函数包含了一段代码执行的过程。可以使用函数声明或函数表达式定义函数。

函数是 JavaScript 的基本组件,一个函数包含了一段代码执行的过程。可以使用函数声明或函数表达式定义函数。

函数声明

函数声明语法:

function functionName(parameters) {
  // some code
}

声明的函数不会立即执行。它们被“保存以备后用”,并将在稍后被调用(调用)时执行。

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

函数表达式

JavaScript 函数也可以使用函数表达式来定义。

函数表达式可以直接赋值给变量:

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

赋值为函数的变量是可以直接执行的:

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

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

存储在变量中的函数不需要函数名。它们总是使用变量名来调用。

Function() 构造函数

正如您在前面的示例中看到的,JavaScript 函数是使用 function 关键字定义的。

函数也可以用 JavaScript 内置的构造函数 Function() 来定义。

const myFunction = new Function("a", "b", "return a * b");
let x = myFunction(4, 3);

大多数情况下,应该避免在 JavaScript 中使用 new 关键字。

函数提升

在本教程的前面的 JavaScript 提升部分,介绍了提升。提升是将声明移动到当前作用域顶部的默认行为。

提升同样适用于函数声明。

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

myFunction(5);

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

使用表达式定义的函数不会被提升。

自执行函数

JavaScript 函数可以在定义后立即执行。就像下面一样:

(function () {
  let x = "Hello!!";
})();

上面的函数实际上是一个自执行匿名函数

自执行函数也可以有参数:

(function (a, b) {
  return a + b;
})(3, 4);

函数是对象

typeof JavaScript 中的运算符为函数返回 "function"

JavaScript 函数是一个特殊的对象,同时具有属性和方法。

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

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

toString() 方法将函数作为字符串返回:

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

let text = myFunction.toString();

箭头函数

JavaScript 箭头函数在 ES6 中引入,它的语法比函数表达式更简洁。

// ES5
var x = function (x, y) {
  return x * y;
};

// ES6
const x = (x, y) => x * y;

如果箭头函数只有一个 return 语句,那么 return 关键字和大括号 {} 可以省略,否则不能省略。

// ES5
var x = function (x, y) {
  console.log(x, y);
  return x * y;
};

// ES6
const x = (x, y) => {
  console.log(x, y);
  return x * y;
};

IE11 或更早版本不支持箭头函数。

目录

  1. JavaScript 函数参数

    JavaScript 通过函数参数将数据传递到函数内部,JavaScript 的函数参数数量是灵活的,参数的类型是不受限制的。
  2. JavaScript 函数调用

    定义了 JavaScript 函数后,函数代码并不会自动执行,需要调用函数才能执行函数中的代码。
  3. JavaScript call() 函数

    JavaScript call() 方法是 Function 对象的一个方法,通过 call() 调用函数可以指定函数内部 this 的值,这让函数/方法能在更多的场景下正确执行。
  4. JavaScript apply() 函数

  5. JavaScript 闭包

    JavaScript 闭包可以让一个内层函数访问到外层函数的作用域,让内层函数可以使用外层函数中定义的变量。