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

时间:2017-09-29 02:12:47

标签: javascript hoisting

我和一些朋友正在使用JavaScript制作游戏,而且它变得非常长,目前它的长度为2942行。前段时间我发现JavaScript并没有正确提升我的功能。我已经在Firefox,Chrome和Safari中对此进行了测试,这三种情况都是如此。有谁知道如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

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

  

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

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

但你也可以使用简单的“分而治之”的方法。如果你的2,942行程序不起作用,那么煮沸到一半,所以1,471行。如果你仍然看到错误或意外行为,那么你知道你删除的1,471行中的问题是,而是你保留的1,471行。然后继续这样做,直到找到问题为止。如果你将代码简化为一个小样本仍然不能按照你认为应该的方式工作,那么就是你可以发布到Stack Overflow。

相关技术是增量回溯。如果您的代码正常运行但突然停止,则删除最近添加的内容。如果您使用像git这样的版本控制系统,这很容易 - 你是谁,对吧?通常,您可以在最近添加或最近更改的代码中轻松找到问题的根源。

请注意,Stack Overflow并非设计为“我们为您免费调试代码”服务。它被设计成一个关于编程的有趣Q& A的存储库。你的问题并不有趣。它甚至没有良好的形成。它甚至不负责任,因为你没有给我们任何信息。即使你发布了所有2,942行,这仍然是一个可怕的问题,因为谁会经历你的数千行寻找错误?如果有人做了,并确定了你的错误,那么这个答案将如何帮助未来的访问者,这是Stack Overflow存在的最终原因?

也许更重要的是,当你试图让你的程序运行时,要求SO上的人找到你的错误是非常缓慢和低效的。您可能需要等待数小时甚至数天才能使用正确的调试技术,您可以在五分钟内解决自己的问题。请记住,如果您正在寻找工作,而面试问题是关于您使用何种调试技术,如果您的答案是您的主要调试技术是将代码墙发布到SO,则没有潜在的雇主会雇佣您并希望别人找到你的错误。

答案 1 :(得分:-1)

很难知道为什么javascript不会在没有代码中没有函数示例的情况下提升而不会被提升。 Javascript只提升函数声明,而不是表达式。

声明:

function myFunction() {
  // I get hoisted!
}

表达式:

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