Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save guomaimang/5ebb3c1714ca213ba024abe7792228aa to your computer and use it in GitHub Desktop.
Save guomaimang/5ebb3c1714ca213ba024abe7792228aa to your computer and use it in GitHub Desktop.
javascript 的运行过程是怎样的

javascript 的运行过程是怎样的?为什么在js代码中,可以先写调用函数,再声明函数呢?

JavaScript 是一种解释性语言,它的运行过程可以简单地概括为以下几个步骤:

语法分析:在执行代码之前,JavaScript 引擎首先会对代码进行语法分析,检查代码中是否存在语法错误。

预编译:在执行代码之前,JavaScript 引擎会预编译代码,将变量和函数声明提升到作用域的顶部,但是函数表达式和 let、const 声明的变量不会提升。

执行:在预编译完成后,JavaScript 引擎按照代码的顺序执行代码。在执行过程中,JavaScript 引擎会创建执行上下文,用于管理函数的作用域、变量、函数参数等信息。

至于为什么在 JavaScript 代码中可以先写调用函数,再声明函数,是因为 JavaScript 在预编译阶段会提升函数声明,将函数声明提升到作用域的顶部,这意味着您可以在函数声明之前调用函数。

例如,以下代码示例中,'myFunction' 函数在调用之前进行了声明,但是在执行时却可以成功调用该函数。

myFunction(); // 可以成功调用函数

function myFunction() {
  console.log('Hello, World!');
}

这是因为在预编译阶段,JavaScript 引擎会将函数声明 'function myFunction()' 提升到作用域的顶部,这使得在函数声明之前调用函数成为可能。

但是,如果您使用函数表达式或 let、const 声明变量来定义函数,则无法在声明之前调用该函数,因为它们不会被提升。

总之,在 JavaScript 中,函数声明可以被提升到作用域的顶部,因此您可以在声明函数之前调用该函数。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment