是否存在提升行为有益的情况

时间:2013-08-26 14:45:46

标签: javascript performance hoisting

我在与JavaScript开发人员进行一些闲聊时遇到了提升的主题,我被告知吊装不是错误,错误或编写功能不佳但是功能强大的工具对于开发人员。

任何人都可以解释JavaScript如何在JavaScript中提升变量和函数作为一个强大的概念,或者在编写代码时它是如何有用的? (或)它只是一个意外被开发人员发现的意外概念?

1 个答案:

答案 0 :(得分:1)

这是我最喜欢的关于吊装和其他JavaScript范围问题/功能的文章,并且比我希望的更好地解释了这一点:

http://www.adequatelygood.com/JavaScript-Scoping-and-Hoisting.html

修改

我错过了你实际上在询问吊装是否有用而不仅仅是它的作用。

所以,既然你已经阅读了那篇文章并知道它的作用,那么这是一个非常常见的片段,它使用了吊装:

JS文件:

var myVar = myVar || {};
myVar.foo = function(){};
//etc...

您将在许多OOP JavaScript文件的顶部看到这个用于声明对象。我们可以这样写的原因是因为在Javascript中提升。

如果没有提升,我们必须写

if(typeof myVar!='undefined'){       var myVar = myVar;    }其他{       var myVar = {};    }

或类似的东西。

另一个巧妙的提升技巧如下:

var a, b = a = "A";

这相当于:

var a = "A";
var b = a;

当你编写函数时会发生另一个关于提升的好处。

在没有提升的更传统的语言中,您需要在执行任何代码之前在页面顶部编写所有函数。否则,您将收到该函数不存在的错误。

通过提升,您的功能可以在任何地方声明(只要您使用var),它们将被提升到顶部,这意味着您不会收到这些错误。

现在,如果您正在编写自己的代码,那么您应该将变量声明在各自范围的顶部,但是假设您有一些脚本文件,您尝试将它们连接到一个。吊装使这个过程变得更加简单。