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

问题描述 投票:1回答:2

最近,我找到了这段代码,这是一种“发现问题所在并修改”的练习。目的是在不将message变量移到代码顶部的情况下使此代码正常工作,我很好奇如何实现这一目标。

function myMethod(cb) {
    cb();
}

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

const message = "My message";
javascript hoisting
2个回答
1
投票

const message重新声明为var message。这会将变量提升到范围的顶部。这是一篇有关此行为的好文章:https://www.vojtechruzicka.com/javascript-hoisting-var-let-const-variables/


-1
投票

[我想到的第一件事是用var关键字声明变量,然后程序不会引发错误,但仍然不会显示消息。如果不使用event loop,则永远无法将初始化操作携带到文件顶部。

大约只有myMethod( () => console.log(message) )环绕在setTimeout函数中]

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

这样,函数的执行将被延迟,直到调用堆栈为空。然后它将用当前值执行函数,然后将其设置。

© www.soinside.com 2019 - 2024. All rights reserved.