【问题标题】:function is hoisted. fun1 called fun2. in what order are they declare?功能被提升。 fun1 称为 fun2。他们以什么顺序宣布?
【发布时间】:2020-01-06 02:30:01
【问题描述】:

我想知道函数在javascript中声明的顺序。

function ex1() {
  document.write("ex1")
}

function ex2() {
  ex1();
}
ex2();
//result is ex1.
function ex2() {
  ex1();
}

function ex1() {
  document.write("ex1")
}
ex2();
//result is ex1.

如果更改订单,我预计会发生错误。 我知道js使用提升。但在顶部,我认为它会按顺序声明。 函数是怎么调用的?

【问题讨论】:

  • 为什么会出现错误?无论哪种情况,这两个函数都在 ex2(); 执行之前声明。
  • the order in which the function is declared in javascript 你的代码很简单......按照你声明它们的顺序

标签: javascript function hoisting


【解决方案1】:

JavaScript 首先读取文件,专门寻找 function 关键字,并存储这些函数及其作用域,然后调用代码。使用 function 关键字声明的所有函数,无论在哪里,只要它们在调用者的可访问范围内,都可以在文件中的任何位置使用。

在您的具体示例中,您在调用其中任何一个之前在文件顶部定义了这两个函数 - 因此您的代码无论如何都可以工作。

【讨论】:

    【解决方案2】:

    在这些示例中都没有发生任何可见的提升,因为声明的函数已经在块的顶部。在您调用ex2 时,这两个函数都已声明,这就是没有错误的原因。即使你在函数声明之前调用了ex2,代码仍然会因为提升而工作。

    【讨论】:

      猜你喜欢
      • 2016-12-23
      • 2022-01-24
      • 2021-08-31
      • 1970-01-01
      • 1970-01-01
      • 2016-10-03
      • 2017-12-28
      • 2013-09-16
      • 2019-06-25
      相关资源
      最近更新 更多