【发布时间】:2022-01-24 02:36:28
【问题描述】:
我正在尝试了解关于“w3schools - 课程:JS 异步”的函数排序教程,但我被困在下面的示例中。
如果你有一个被调用两次的 JS 函数,显然函数被调用的顺序决定了哪个函数被执行,在下面的例子中,我希望第一个函数被执行,但它不是
这节课的精髓应该是,函数的声明不决定它的执行顺序,只决定它的调用方式,但我无法掌握..
谁能详细说明或解释这种语法的逻辑?或者 JS 的底层发生了什么?
教程链接:https://www.w3schools.com/js/js_callback.asp
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Function Sequence</h2>
<p>JavaScript functions are executed in the sequence they are called.</p>
<p id="demo"></p>
<script>
function myDisplayer(some) {
document.getElementById("demo").innerHTML = some;
}
function myFirst() {
myDisplayer("Hello");
}
function mySecond() {
myDisplayer("Goodbye");
}
myFirst();
mySecond();
</script>
</body>
</html>
【问题讨论】:
-
你没有调用任何函数两次。函数怎么没执行?似乎它在您的示例中有效。
-
好的,伙计们,我添加了完整的代码。执行的函数是第二个函数“再见”即使第一个函数是被调用的,这就是我的意思。
-
mySecond是最后调用的,所以“Goodbye”是最后的输出。您只是覆盖了myFirst函数调用中的先前结果“Hello”。尝试将innerHTML = some更改为innerHTML += some,您将看到两个结果的顺序正确。 -
好的,谢谢 Carabus.. 我想我明白你的意思,它被最后调用并因此被执行。但是第一个函数根本没有执行,即使我也调用了它..我不明白这一点。当我同时调用它们时,不应该同时执行这两个函数吗?
-
@JhonattanRapprecht,第一个函数被执行,但它的结果立即被第二个函数调用覆盖。想想看:每次调用其中一个函数时,您实际上是在 替换 (
.innerHTML = ...) #demo div 的全部内容。
标签: javascript function async.js