首页 > web前端 > js教程 > 正文

JavaScript 如何允许在定义之前使用函数?解释了提升的奥秘。

Mary-Kate Olsen
发布: 2024-10-28 20:24:02
原创
888 人浏览过

How Does JavaScript Allow Function Use Before Definition? The Mystery of Hoisting Explained.

函数声明与表达式:揭开 JavaScript 中早期函数访问的奥秘

尽管其外观直观,但使用函数的能力在其在 JavaScript 中的定义之前,它长期以来一直让开发人员感到困惑。考虑以下代码:

<code class="javascript">function fooCheck() {
  alert(internalFoo()); // Using internalFoo() before its definition

  return internalFoo(); // Still using it, despite its undefined status

  function internalFoo() { return true; } // Finally, the definition arrives
}

fooCheck();</code>
登录后复制

奇怪的是,这段代码在所有主流浏览器中执行时都没有错误。为了解开这个谜团,我们转向函数声明和表达式的概念。

函数声明:提升的秘密

JavaScript 中的 ключевое слово “函数”创建一个函数宣言。与作为赋值的函数表达式不同,函数声明表现出一个独特的特征:提升。

提升是一种语法技巧,它将函数标识符提升到其范围内的所有其他语句之上,从而允许在其实际引用之前对其进行引用定义。在我们的示例中,标识符“internalFoo”被提升,使其可以在“fooCheck”函数内的任何点使用。

早期函数访问:提升的后果

提早访问“internalFoo”是提升的直接结果。解释器遇到函数声明并为标识符“internalFoo”分配一个占位符,以便随后引用它。只有当解释器到达函数体时,它才会执行定义,创建实际的函数。

函数表达式:应用不同的规则

与函数声明相比,函数表达式遵循正常的自顶向下执行。它们在遇到时进行评估,并且它们的标识符不会被提升。这意味着在定义之前尝试访问函数表达式将导致错误。

ECMAScript 标准中的说明

函数声明的行为是显式定义的在 ECMAScript 标准(第 10.1.3 节)中。它指出函数声明在执行任何代码块内容之前绑定,无论函数在代码中的位置如何。

以上是JavaScript 如何允许在定义之前使用函数?解释了提升的奥秘。的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!