trl*_*kly 0 javascript greasemonkey function
我是JavaScript的新手,我自己学习.我目前正在创建和调整GreaseMonkey脚本.我注意到大多数简单的脚本(即那些不需要命名函数的脚本)直接进入主代码,但有些脚本设置如下:
(function() {
//main code here
})();
Run Code Online (Sandbox Code Playgroud)
这种编码有什么意义?我已经注释掉了顶部和底部,脚本仍然运行完全相同.
它只是一个编码标准,还是它实际上有一个功能?并且,正如我的标题所要求的那样,它是GreaseMonkey特有的东西,还是我应该一直做的事情?
此技术有效地创建了一个私有命名空间,只能由此脚本访问.例如,这段代码:
(function() {
var a = 5;
})();
Run Code Online (Sandbox Code Playgroud)
将对全局命名空间没有影响(该a变量由闭包捕获,因此window.a不会受到影响).这是一种非常好的方法,可以让许多脚本不会踩到彼此的全局变量,使它们根本不是全局变量.我在编写任何JavaScript时都会使用这种技术,而不仅仅是Greasemonkey脚本,并强烈建议在编写库时将其作为最佳实践.
如果您想将某些函数暴露给其他JavaScript代码而不是完全隔离您的脚本,您可以执行以下操作:
var MyNamespace = (function () {
var that = {};
that.square = function(x) {
return x*x;
};
return that;
})();
Run Code Online (Sandbox Code Playgroud)
然后你可以MyNamespace.square(5)从另一个脚本做,这将返回25.
| 归档时间: |
|
| 查看次数: |
537 次 |
| 最近记录: |