javascript - 在初始化之前使用变量。 JS

标签 javascript hoisting

最近我发现了这段代码,这是一个“发现错误并修改”类型的练习。目的是使这段代码在不移动代码顶部的消息变量的情况下工作,我很好奇如何实现这一点。

function myMethod(cb) {
    cb();
}

myMethod( () => console.log(message) );

const message = "My message";

最佳答案

我首先想到的是用 var 关键字声明变量,然后程序不会抛出错误但仍然不会打印消息。如果不使用 event loop,您永远无法将初始化带到文件顶部.

显然唯一的方法是包围 myMethod( () => console.log(message) ) 在 setTimeout 函数中

setTimeout(() => {
  myMethod( () => console.log(message) )
}, 0)

这样函数的执行会被延迟到调用栈为空。然后它将使用届时设置的当前值执行该函数。

关于javascript - 在初始化之前使用变量。 JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59240761/

相关文章:

javascript - Ruby on rails3 javascript 代码放在哪里

javascript - 使用 Javascript 的联系表

javascript - 如何使用函数式编程重构 javascript 代码

javascript - 是否可以将 Canvas ID 的宽度和高度属性设置为窗口大小的 90%?

javascript - 将数组从代码隐藏例程传递到 javascript

javascript - 提升与范围链

javascript - 函数和变量提升的意外结果

Javascript 提升自执行功能

javascript - Node 中的箭头函数提升?

JavaScript 没有函数的变量提升