我在与开发人员进行一些随意的讨论时遇到了提升这个话题JavaScript
,我被告知提升不是一个错误、错误或编写不佳的功能,而是开发人员的强大工具。
谁能解释JavaScript
变量和函数的提升如何作为一个强大的概念,JavaScript
或者它在编写代码时有什么帮助?(或)它只是一个无意中被开发人员意外发现的概念吗?
我在与开发人员进行一些随意的讨论时遇到了提升这个话题JavaScript
,我被告知提升不是一个错误、错误或编写不佳的功能,而是开发人员的强大工具。
谁能解释JavaScript
变量和函数的提升如何作为一个强大的概念,JavaScript
或者它在编写代码时有什么帮助?(或)它只是一个无意中被开发人员意外发现的概念吗?
这是我最喜欢的关于提升和其他 JavaScript 范围问题/特性的文章,并且比我希望的更好地解释了这一切:
http://www.adequatelygood.com/JavaScript-Scoping-and-Hoisting.html
编辑:
我错过了您实际上是在询问提升何时有用,而不仅仅是它的作用。
所以,既然您已经阅读了那篇文章并且知道它是做什么的,那么这里有一个使用提升的非常常见的片段:
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
),它们将被提升到顶部,这意味着您不会收到这些错误。
现在,如果您正在编写自己的代码,那么无论如何您都应该在它们各自作用域的顶部声明变量,但是假设您有几个脚本文件要连接到一个文件中。吊装使该过程变得更加简单。