为什么我的JavaScript没有提升功能?

为什么我的JavaScript没有提升功能?,javascript,hoisting,Javascript,Hoisting,我和几个朋友正在用JavaScript制作一个游戏,它变得非常长,目前有2942行。不久前,我注意到JavaScript没有正确地提升我的函数。我已经在Firefox、Chrome和Safari中进行了测试,这三种浏览器都是如此。有人知道如何解决这个问题吗?如果没有代码中未被提升的函数示例,很难知道为什么javascript没有被提升。Javascript只提升函数声明,不提升表达式 声明: function myFunction() { // I get hoisted! } 表达方式:

我和几个朋友正在用JavaScript制作一个游戏,它变得非常长,目前有2942行。不久前,我注意到JavaScript没有正确地提升我的函数。我已经在Firefox、Chrome和Safari中进行了测试,这三种浏览器都是如此。有人知道如何解决这个问题吗?

如果没有代码中未被提升的函数示例,很难知道为什么javascript没有被提升。Javascript只提升函数声明,不提升表达式

声明:

function myFunction() {
  // I get hoisted!
}
表达方式:

let myFunction = function () {
  // I don't get hoisted!
}

您可能在所有引擎中都发现了一个bug。您应该向引擎开发人员报告该错误。或者,您可以提供一些代码供我们查看,如清楚描述的,我相信您已经看过了,但可能已经忘记了。摘录:

…如果您的问题在于所编写的代码,您应该包括一些。但不要只是复制整个程序。。。它可能包含许多不相关的细节,读者在试图重现问题时需要忽略这些细节

或者,您可以使用一种鲜为人知的称为“调试”的技术。我建议你学一下。通常,“调试”技术是使用一种称为“调试器”的工具完成的。例如,调试器允许您监视代码的执行,检查变量,并在“断点”处停止代码

但您也可以使用简单的“分而治之”方法。如果您的2942行程序不起作用,那么可以归结为其中的一半,即1471行。如果您仍然看到错误或意外行为,那么您知道问题不在删除的1471行中,而在保留的1471行中。然后继续这样做,直到你发现问题。如果您将代码归结为一个小样本,它仍然不能按您认为应该的方式工作,那么您可以在该点上发布到堆栈溢出

一个相关的技术是增量回溯。如果您的代码正在工作,但突然停止,请删除您最近添加的内容。如果您使用的是像
git
这样的版本控制系统,那么这就很容易了,对吗?通常,您可以很容易地在最近添加或更改的代码中找到问题的根源

请看,问题是,堆栈溢出不是设计为“我们免费为您调试代码”服务的。它被设计成一个关于编程的有趣问答库。你的问题不有趣。它甚至都不是很好的形式。因为你没有给我们任何信息,所以它甚至不负责。即使你发布了所有2942行,这仍然是一个可怕的问题,因为谁会在你的数千行中寻找bug?如果有人这样做了,并且发现了您的bug,那么这个答案将如何帮助未来的访问者访问SO,这是堆栈溢出存在的最终原因


也许更重要的是,当你试图让你的程序正常工作时,让别人来发现你的bug是非常缓慢和低效的。您可能需要等待数小时甚至数天,使用正确的调试技术,您可以在五分钟内解决自己的问题。记住,如果你正在找工作,面试的问题是关于你使用什么样的调试技术,如果你的回答是,你的主要调试技术是在SO上张贴代码墙,并希望其他人发现你的错误,那么任何潜在雇主都不会雇用你。

毫无疑问,编译器正在正确处理代码。这个问题没有答案。