替代的方式来解决JavaScript的范围的问题
截至目前,我一直在使用自动执行,以避免变量命名问题匿名函数:替代的方式来解决JavaScript的范围的问题
(function() {
var a, b, c;
a = 5;
b = 10;
c = 15;
console.log('No problema!');
]());
我也知道使用的onload功能也另一种方法:
window.onload = function() {
var a;
a = 25;
console.log('Yay!!!');
}
但我真的不喜欢我怎么代码是完全被困在里面的功能 - 有,我可以采取与JavaScript对象,可以帮助我避免使用自动执行功能的方法呢?
在当今大多数浏览器上,功能简单是封装的单位。如果你想为一个变量创建一个范围,你可以将它设置为一个函数的本地。
但是,如今有许多服务器端JavaScript安装,模块存在,很多都基于require.js。如果您使用Nodejs编写应用程序,那么您已经熟悉它了。
虽然JavaScript的下一个版本即将推出。这个新的JavaScript命名为ES6,ES.next,Harmony或JavaScript.next,将包含用于隐藏信息的模块以及块范围。许多浏览器现在开始实现该语言的功能。您可以在http://repl.it以及其他地方进行试验。您可以使用Google的Traceur compiler将包含许多ES6提案的语言编译为当今的JavaScript。
TL; DR:现在:坚持在浏览器中的功能。或者为您的服务器端应用程序使用require.js。因为ES6即将到来,请继续。
这被称为“Reavealing Module Pattern”。它允许您使用范围来隐藏变量,同时通过将属性和方法附加到返回的对象来使其可用。您可以在这里了解更多关于此模式的信息以及其他信息:http://addyosmani.com/resources/essentialjsdesignpatterns/book/#revealingmodulepatternjavascript
尽管此方法不会删除“自动执行”功能,但它确实可以让您保留范围限定和变量隐藏的获益,同时使事物可用外部范围。
我还应该注意到它们不是自动执行功能。他们不执行自己。我们其实是为他们做的:)。只是我的宠物,哈哈。
你想让代码看起来像什么? – SomeKittens 2012-07-20 02:55:28
@SomeKittens你能说一点你的意思吗?根据你的回答,我会稍微澄清一下我的问题。 – 2012-07-20 02:56:50
你现在拥有什么没有什么技术上的错误。你想一次声明和分配一个变量吗?你想在不同的功能中使用相同的变量吗?你想做什么? – SomeKittens 2012-07-20 02:58:15