4

我在与开发人员进行一些随意的讨论时遇到了提升这个话题JavaScript,我被告知提升不是一个错误、错误或编写不佳的功能,而是开发人员的强大工具。

谁能解释JavaScript变量和函数的提升如何作为一个强大的概念,JavaScript或者它在编写代码时有什么帮助?(或)它只是一个无意中被开发人员意外发现的概念吗?

4

1 回答 1

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; }else{ var myVar = {}; }

或类似的规定。

另一个巧妙的吊装技巧如下:

var a, b = a = "A";

这相当于:

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

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

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

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

现在,如果您正在编写自己的代码,那么无论如何您都应该在它们各自作用域的顶部声明变量,但是假设您有几个脚本文件要连接到一个文件中。吊装使该过程变得更加简单。

于 2013-08-26T14:59:46.857 回答