函数声明与表达式:揭开 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中文网其他相关文章!