返回

JavaScript 函数(二)——函数的要素剖析与深入理解

前端

前言

在 JavaScript 中,函数是用来执行特定任务的一段代码块。函数可以被其他函数调用,也可以被事件(如点击事件)触发。在上一篇文章中,我们已经学习了 JavaScript 函数的基本用法。在本文中,我们将深入剖析 JavaScript 函数的要素,包括调用时机、作用域、闭包、形式参数、返回值、调用栈、函数提升、arguments(除了箭头函数)、this(除了箭头函数)。

调用时机

函数的调用时机是指函数被执行的时间。在 JavaScript 中,函数的调用时机主要有以下几种:

  • 当函数被声明时,函数不会被执行。
  • 当函数被调用时,函数会被执行。
  • 当函数被作为参数传递给另一个函数时,函数不会被执行。
  • 当函数被作为返回值返回时,函数不会被执行。

作用域

函数的作用域是指函数可以访问的变量的集合。在 JavaScript 中,函数的作用域有两种:

  • 局部作用域:局部作用域是指函数内部的变量的集合。局部作用域中的变量只能在函数内部访问,不能在函数外部访问。
  • 全局作用域:全局作用域是指函数外部的变量的集合。全局作用域中的变量可以在任何地方访问,包括函数内部。

闭包

闭包是指函数访问其外部作用域中的变量的现象。在 JavaScript 中,闭包可以用来实现私有变量和私有方法。

形式参数

形式参数是指函数声明时定义的参数。形式参数在函数内部被用来接收实参。

返回值

返回值是指函数执行后返回的值。返回值可以是任何类型的数据,包括 undefined。

调用栈

调用栈是指函数被调用的顺序。在 JavaScript 中,调用栈是一个 LIFO(后进先出)的数据结构。这意味着最后被调用的函数最先被执行,最先被调用的函数最后被执行。

函数提升

函数提升是指在 JavaScript 中,函数声明会自动提升到代码的顶部。这意味着函数可以在声明之前被调用。

arguments(除了箭头函数)

arguments 对象是一个类数组对象,它包含了函数的所有实参。arguments 对象可以用来访问函数的实参。

this(除了箭头函数)

this 是指函数执行时的上下文对象。this 关键字可以在函数内部用来访问上下文对象。

箭头函数

箭头函数是 ES6 中引入的新函数语法。箭头函数没有自己的作用域,也没有自己的 this 关键字。箭头函数的实参列表可以省略括号。

总结

在本文中,我们深入剖析了 JavaScript 函数的要素,包括调用时机、作用域、闭包、形式参数、返回值、调用栈、函数提升、arguments(除了箭头函数)、this(除了箭头函数)。通过对这些要素的理解,我们可以更好地使用 JavaScript 函数来编写代码。